2017-06-13 4 views
-1

私は、次のしている:私は、UpdateボタンをクリックするとAjaxコールの後に私のフォームが提出されるのはなぜですか?

<form id="form" action="xxx" method="get"> 
    <input type="checkbox" name="cb"> 
    <button onclick="update();">Update</button> 
</form> 

<script> 
    function update() { 
    var data = $("#form").serialize(); 
    $.ajax({ 
     url: "/api/m/x", 
     type: "post", 
     data: data 
     } 
    ).done(function(results,status) { 
      alert(status); 
     }).fail(function(error, status) { 
      alert(status); 
     }); 
    } 
</script> 

、Ajax呼び出しは/api/m/xに行われたとの警告のいずれかがトリガされました。ここまでは順調ですね。しかし、私は警告ダイアログを閉じた後、フォームが提出されます!ブラウザはxxx?cb=onに送信されます(たとえば、チェックボックスをオンにした場合)。

どうしてですか?私のフォームには<input type='submit'>要素がありません。誰がフォームの提出をトリガーしていますか?

update機能にreturn false;を追加しようとしましたが、動作は変わりません。フォーム内のボタンを持っている場合は、

はこのようにしてみてください、このボタンをクリックすると

+0

ss – unixmiah

+0

これは 'done'の権利ですか? –

+0

送信しないように何もしていないので、 – j08691

答えて

0

形で<button>タグが送信ボタンでtype=button
戻り値falseはonsubmitイベントにある必要があります

<form id="form" action="xxx" method="get" onsubmit="return update();"> 

function update() { 
... 
    return false; 
} 
1

は、フォームが提出されて:あなたが指定しない限り

<form onsubmit="update();return false;"> 
関連する問題