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

フォームのアクションを、のように正しくないものに設定しますaction="error.html"。次に、フォーム送信プロセスの最後のステップとして、アクションを正しいリンクに動的に設定します。

ボタンをまったく送信しないようにして、フォームを手動で送信することもできます。

$('#myForm').submit();
于 2012-06-29T18:09:43.267 に答える
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 に答える
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 に答える
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 に答える