0

このコード(SOから)を使用してasp.net Webフォームボタンを無効にし、クリック時にボタンを無効にしました

$(document).ready(function () {
    $('[id$=btnSave]').click(function () {
        var button = this;

        setTimeout(function () {
            $(button).attr('disabled', 'disabled');
        }, 100);
    });
});

しかし、WebFormsプラグイン用のjQuery検証とJQuery検証グループをページに追加すると、

$(document).ready(function () {
    $("#form1").validateWebForm({
        rules: {
            myDate: {
                customDate: true
            },
            nic: {
                nicNo: true
            }
        }
    });
...
<asp:TextBox ID="txtName" runat="server" CssClass="required" ></asp:TextBox>

入力が有効でない場合でも、ボタンを無効にします。入力が有効でない場合にボタンを無効にしないようにするにはどうすればよいですか?

4

1 に答える 1

1

ボタンを無効にして送信する前に、プラグインの組み込み.valid()メソッドを使用してフォームをテストしてみてください。コメントによると、jQuery Validate プラグインを別のプラグインで初期化していることがわかりますが、以下のコア コンセプトは同じように機能するはずです。

デモ: http://jsfiddle.net/7HzZF/

jQuery :

$(document).ready(function() {

    $('#myform').validate({
        // rules & options
    });

    $('#button').on('click', function (e) {
        e.preventDefault();
        if ($('#myform').valid()) {
            $('#myform').submit();
            $(this).attr('disabled', 'disabled');
        }
    });

});

HTML :

<form id="myform">
    ....
    <input id="button" type="submit" />
</form>

または、他のプラグインでコールバック関数を使用できる場合は、submitHandler代わりにそれを使用することを強くお勧めします。

http://jsfiddle.net/h34bJ/

有効なフォームでのみ起動し、この冗長で余分なイベント処理の多くを本当に片付けます。

$(document).ready(function () {

    $('#myform').validateWebForm({
        // your rules,
        submitHandler: function (form) {
            $('#button').attr('disabled', 'disabled');
        }
    });

});
于 2013-03-21T04:43:47.903 に答える