4

我有如下表格

<form id="myform" class="form-horizontal" class="collapse in">
    <fieldset>
        <!-- form fields are here -->
        <div class="form-actions">
          <button class="btn btn-inverse" id="search" name="search" data-loading-text="Searching...">Search</button>
        </div>
    </fieldset>    
</form>

一旦按下按钮,我将使用以下代码执行操作:

$("#search").click(function() {
    try {
        // some javascript with syntax error is here
    } finally {
        return false; // don't submit form automatically
    }
});

但是如果我的 javascript 包含语法错误,那么无论try .. finally. 我该如何解决?表单不应自动提交。

4

4 回答 4

2

将按钮类型设置为“按钮”。

按钮:按钮没有默认行为。它可以具有与元素事件相关联的客户端脚本,这些事件在事件发生时被触发。

<button type="button"...>Search</button>

如果是这种情况,该表单根本不会提交,直到您告诉它通过 Javascript 显式提交。

有关这个简单的解决方案,请参阅 HTML5 规范。http://www.w3.org/TR/2011/WD-html5-20110525/the-button-element.html#attr-button-type

于 2012-06-29T18:13:11.513 回答
2

将表单的操作设置为不正确的内容,例如action="error.html". 然后作为表单提交过程的最后一步,动态地将操作设置为正确的链接。

您也可以使按钮根本不提交,并手动提交表单:

$('#myForm').submit();
于 2012-06-29T18:09:43.267 回答
1
$("#search").click(function(e) {
e.preventDefault();
try {
    // some javascript with syntax error is here
} finally {
    return false; // don't submit form automatically
}});

在点击功能上,防止默认动作。然后如果代码确实通过了,然后手动调用提交

$('#myForm').submit();
于 2012-06-29T18:52:26.980 回答
1

event.preventDefault在事件开始时使用并自己触发提交。

$("#search").click(function(event) {
    event.preventDefault();
    // some javascript with syntax error is here
    var foo = "bar";
    alert(foobar); // ERROR
    // if syntax error occurs in this scope, the form won't submit
    $(this).closest("form")[0].submit(); 
});

演示

于 2012-06-29T18:48:22.153 回答