web-dev-qa-db-ja.com

onclickイベントの送信ボタンが送信されないようにする

Onclickイベントの送信ボタンが送信されないようにしたい:

_$j('form#userForm .button').click(function(e) {
    if ($j("#Zip_field").val() > 1000){
        $j('form#userForm .button').attr('onclick','').unbind('click');
        alert('Sorry we leveren alleen inomstreken hijen!');
        e.preventDefault();
        return false;
    }
});
_

これは送信ボタンです:

_<button class="button vm-button-correct" type="submit"
 onclick="javascript:return myValidator(userForm, 'savecartuser');">Opslaan</button>
_

「アラート」機能が表示され、onclickイベントも削除されますが、フォームは送信されます。送信する前に手動でonclickイベントを削除すると、問題が解決します。ただし、これはのコア機能であり、削除したくありません。

編集:

それは間違いなくonclickセレクターが原因です。どうすれば、jQueryスクリプトにonclickイベントを即座にリロードさせることができますか? jqueryコードの前に追加:$j('form#userForm .button').attr('onclick','');は問題を解決します。しかし、私の検証はもう機能しません...

14
Coen Ponsen

基本的に、ボタンタイプをtype="submit"からtype="button"に変更すると、そのようなボタンはフォームを送信せず、回避策は必要ありません。

お役に立てれば。

13
lxgreen

関数/イベント引数があることを忘れないでください。ただし、パラメーターを指定する必要があります。

$("#thing").click(function(e) {
  e.preventDefault();
});

このようにして、送信は停止されるため、条件付けを行うことができます。

1
Grant Thomas

最善の方法は、フォームの送信イベントハンドラ内ですべてを行うことです。インラインのonclickを削除し、submit関数内で実行します

$j('#userForm').submit(function(e) {
    if (+$j("#Zip_field").val() > 1000){
        alert('Sorry we leveren alleen inomstreken hijen!');
        return false;
    }
    return myValidator(userForm, 'savecartuser');
});
0
ᾠῗᵲᄐᶌ