0

フォームの送信にボタンが使用されたと判断しようとしています。

2つのボタンがあります。フォーム内でキャンセルして送信します。どちらをクリックするかによって、送信が行われる前にいくつかの機能を実行したいと思います。

サーバー側のPOSTから値を決定できますが、最初にクライアント側で決定する必要があります

「キャンセル」ボタンが使用されたかどうかを判断するために、どのjquery関数を呼び出しますか?

フォームの送信は、jquery検証のsubmitHandlerイベントの一部として処理されています。

要素は次のとおりです。

<input name="submit" type="submit" value="Submit" />
<input name="cancel" type="submit" value="Cancel" />

送信ハンドラは次のとおりです。

submitHandler: function(form) {
                    form.submit();
                    }

ありがとう

4

2 に答える 2

1

これを試して...

   $('#myform').validate({
        rules: {
            field1: {
                required: true,
                minlength: 5
            },
            field2: {
                required: true,
                minlength: 5
            }
        },
        submitHandler: function (form) { // for demo
            alert('form submitted');
            return false;
        }
    });

    $(':submit').on('click', function () {
        if ($(this).attr('name') == 'submit') {
            $(this).closest('form').submit();
        }
    });

    $('[name="cancel"]').click(function () {
        // your code that handles a cancel click
        alert('form cancelled');
        return false;
    });

実例_

ご挨拶。

于 2013-01-30T20:42:51.663 に答える
1

プラグインはすでにコールバックでイベントをclick自動的にキャプチャしているため、jQueryValidateプラグインで外部ハンドラーまたは追加ハンドラーを使用したくないのは正しいことです。submit clicksubmitHandler

あなたの問題は、あなたが本当に「キャンセル」ボタンを持っていないということです。これは複製submitボタンにすぎません...

<input name="cancel" type="submit" value="Cancel" />

あなたが何をしても、プラグインは常にそのclickイベントを通常のフォーム送信として扱います。に変更するとどうなります<button></button>か?まだダメ。プラグインはまた、buttonclickイベントを通常のフォーム送信として扱います。他の種類のボタン/キャンセルclickイベントをキャプチャできる、このプラグインに組み込まれている他のコールバック関数/オプションはありません。

唯一のオプションは、タグの外側に配置することです。<form></form>Valdiateプラグインはそれを認識せず、独自のclickイベントをそれにバインドできます。

あなた自身のcancelクリックイベント:

$('[name="cancel"]').click(function() {
    // your code that handles a cancel click
});

使用するデモ:http <input type="submit"//jsfiddle.net/wZwcQ/

使用するデモ:http <button></button>//jsfiddle.net/h7XKc/

于 2013-01-30T23:04:37.690 に答える