2

ユーザーがボタンをクリックしたときにすべての送信ボタンを無効にするスクリプトを作成したいのですが、すべてのビューで使用できる次の Jquery スクリプトを作成しましたが、機能しませんでした:-

$(document).ready(function () {
    $(":input[type=submit]").click({
        this.attr('disabled', 'disabled');

    });
})

では、私のコードの何が問題なのですか? ブラジル

4

6 に答える 6

2
$(document).ready(function () {
    $("input[type='submit']").click(function() {
         $(this).prop('disabled', true);
    });
});

また

$(document).ready(function () {
    $("input[type='submit']").click(function() {
         this.disabled = true;
    });
});

送信ボタンがフォームを送信している場合、ページをリロードするデフォルトのアクションを防止する必要があります。

    $("input[type='submit']").click(function(e) {
         e.preventDefault();
         $(this).prop('disabled', true);
    });
});
于 2012-05-06T02:12:57.197 に答える
0

これがあなたが探しているものだと思います:

$("input[type=submit]").click(function() {
    $(this).attr('disabled', 'disabled');

    // if you want to disable all buttons on the form do the following
    // $("input[type=submit]").attr("disabled", "disabled");
});

編集:

アデネオ そうですね。prop()メソッドを使用するとよいでしょう。私は個人的に 経由で無効にすることで問題が発生したことはありませんがattr('disabled', 'disabled')、以前に人々がそれについて言及していると聞いたことがあります.

ただし、please-explain-attr-vs-prop-change-in-1-6に関するこの jquery フォーラムの投稿は、attr() メソッドの使用時に人々が無効化で問題を抱えている理由をより詳しく説明している可能性があります。ほとんどの場合、無効にするのではなく、true に設定しています。

于 2012-05-06T02:11:33.633 に答える
0

このようなものはどうですか:

$(document).ready(function () {
    $("form").submit({
        $("input[type=submit]").attr('disabled', 'disabled');
        return true;
    });
});

上記は、意図したことを達成するためのより良い方法です。コードを機能させたい場合は、jQuery セレクターの:beforeを削除してください。input

于 2012-05-06T02:11:55.460 に答える
0

すべてのボタンを無効にしたいと言いますが、「this」キーワードは、イベントがスローされる原因となった項目のみを参照するため、次のものが必要です。

$(document).ready(function () {
    $("input[type='submit']").click({
        $("input[type='submit']").attr("disabled","disabled");

    });
});
于 2012-05-06T02:13:59.100 に答える
0

スクリプトが機能しない理由thisは、jQuery オブジェクトではなく HTML 要素を参照しているためです。次のような関数を実行するには、jQuery オブジェクトでラップする必要がありますattr

$(this).attr('disabled', 'disabled');

さらに、すべての送信ボタンを無効にする場合は、新しい選択を実行してすべて無効にする必要があります。このコードは、あなたが望むことをするはずです:

// Passing a function to $ will run it on document ready
$(function () {
    $("input[type=submit]").click({
        // Select all submit inputs and disable them
        $('input[type=submit]').attr('disabled', 'disabled');
    });
});

送信ボタンをクリックすると、すべての送信ボタンが無効になるようになりました。

于 2012-05-06T02:14:10.573 に答える
0

入力セレクターで「:」を使用せずに $(this) を使用してみてください。

$(function () {
    $("input[type=submit]").click(function() {
        $(this).attr('disabled', 'disabled');
    });
})

参考までに - $(document).ready の簡略構文を使用しました。

于 2012-05-06T02:17:02.587 に答える