3

ここSOにはいくつかのスレッドがありますが、アプリで広く使用している素晴らしいjQuery Formプラグインを特に扱っているスレッドは見つかりませんでした.

ユーザーが「送信」を 1 回だけクリックできるようにし、成功時に Ajax が JSON 文字列を返すまで「送信」ボタンを無効にします。

私のトライアルコードは次のようになります

$('#submit_button').live('click', function(e) {
e.preventDefault();

var options = {
    type:           'post',
    dataType:       'json',
    beforeSubmit:   function(){
                        $('#loading').show().fadeIn();
                        $('#submit_button').attr('disabled', 'disabled');
                    },
    success:        function(data) {
                            if (data.success === 3) {
                                $('#submit_button').hide();
                                $('#loading').hide();
                                $('#validation_message').html(data.message).fadeIn();
                                $('#submit_button').attr('enabled', 'enabled');
                            }
                    }
            }

$(this).closest('form').ajaxSubmit(options);
});

しかし、これにより、「有効」属性と「無効」属性が<button>.

<button class="button" id="submit_button" disabled="disabled" enabled="enabled"> Post </button>

これを機能させる方法について何か提案はありますか?

4

3 に答える 3

2

属性「有効」を「有効」に設定する代わりに、「無効」属性の設定を解除します。$('#submit_button').attr('disabled', '');

HTML にはボタンの「有効化」属性がないため、ブラウザはそれに対して何もしません。ブラウザはそれを単なる「ジャンク」属性と見なします。「無効」属性の設定と設定解除は、あなたが求めているものです。

于 2012-06-20T02:24:52.823 に答える
1

試す:

成功ハンドラーにこの行を追加します..

 $('#submit_button').removeAttr('disabled');

成功ハンドラーで次の行を削除します。

$('#submit_button').attr('enabled', 'enabled');
于 2012-06-20T02:25:17.590 に答える
1

今はテストできませんが、removeAttrを使用すると役立つはずです (beforeSubmit 部分で削除を有効にし、成功した場合は逆に削除します)。

于 2012-06-20T02:25:36.177 に答える