我可以让<按钮>不提交表格吗?

ale*_*lex 475 html javascript jquery jquery-ui button

我有一个表格,有2个按钮

<a href="index.html"><button>Cancel changes</button></a>

<button type="submit">Submit</button>
Run Code Online (Sandbox Code Playgroud)

我也使用jQuery UI的按钮,就像这样

$('button').button();
Run Code Online (Sandbox Code Playgroud)

但是,第一个按钮也会提交表单.我会想,如果它没有type="submit",它就不会.

显然我可以做到这一点

$('button[type!=submit]').click(function(event) { event.stopPropagation(); });
Run Code Online (Sandbox Code Playgroud)

但有没有办法可以阻止后退按钮提交表单而无需JavaScript干预?

说实话,我只使用了一个按钮,所以我可以使用jQuery UI来设置它.我试着调用button()链接,它没有按预期工作(看起来很丑!).

Jos*_*Lee 1046

元素type属性button 的默认值 "submit".

<button type="button">Submit</button>
Run Code Online (Sandbox Code Playgroud)

  • 这只是一个令人震惊的糟糕设计选择. (45认同)
  • 根据w3schools的说法,[不适用于IE](http://www.w3schools.com/tags/att_button_type.asp). (14认同)
  • 大家:请阅读https://html.spec.whatwg.org/multipage/syntax.html#unquoted (2认同)
  • 哇,你和亚历克斯在修订版中真的在较量。我不明白为什么你们两个关心引号或不关心属性。 (2认同)

s4y*_*s4y 224

button元素的默认类型为submit.

您可以通过设置以下类型使其无效button:

<button type="button">Cancel changes</button>
Run Code Online (Sandbox Code Playgroud)


Jef*_*ake 17

只需使用旧的HTML:

<input type="button" value="Submit" />
Run Code Online (Sandbox Code Playgroud)

如果您愿意,请将其作为链接的主题包装:

<a href="http://somewhere.com"><input type="button" value="Submit" /></a>
Run Code Online (Sandbox Code Playgroud)

或者,如果您决定要javascript提供其他功能:

<input type="button" value="Cancel" onclick="javascript: someFunctionThatCouldIncludeRedirect();"/>
Run Code Online (Sandbox Code Playgroud)

  • @ JGB146:`Button`是HTML中的容器.这允许你放置像图像或表格的东西(不知道为什么你这样做,但你可以)等,而`input`不支持它.两者之间存在差异,每个都有适当的用例. (11认同)
  • 使用具有适当类型属性的标准按钮控件是"好老的html",并创建更简单的标记. (7认同)

Geo*_*iga 15

是的,您可以通过添加值按钮类型的属性来使按钮不提交表单:

<button type="button"><button>
Run Code Online (Sandbox Code Playgroud)


小智 6

<form onsubmit="return false;">
   ...
</form>
Run Code Online (Sandbox Code Playgroud)


TCC*_*CCV 5

老实说,我喜欢其他答案.简单而无需进入JS.但我注意到你问的是jQuery.因此,为了完整起见,如果使用.click()处理程序返回false,则在jQuery中,它将取消窗口小部件的默认操作.

请看这里的示例(以及更多好东西). 这里也是文档.

简而言之,使用示例代码,执行以下操作:

<script type="text/javascript">
    $('button[type!=submit]').click(function(){
        // code to cancel changes
        return false;
    });
</script>

<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
Run Code Online (Sandbox Code Playgroud)

另外一个好处是,你可以摆脱锚标签,只需使用按钮即可.