0

私はこのコードを持っていますが、これを何度も変更して微調整して数えることはできませんが、フォームボタンが a の場合は機能しません。それで問題ありませんtype="submit"が、理由はありますか? タイプを変更すると、type="button"機能します。

$(document).ready(function () {
    $('#btnSubmit').attr('disabled', true);
    $('#myForm :input:not(#btnSubmit)').blur(function () {
        if ($('#myField').val() == '') {
            $('#btnSubmit').attr('disabled', true);
        } else {
            $('#btnSubmit').attr('disabled', false);
        }
    });
});

私は約25冊のJQuery本を持っており、Not演算子の使用方法を説明していますが、フォームボタンには送信タイプではなくタイプボタンが必要であると書かれています。

ただ学ぼうとしている。

注: 上記のコードは何度も変更されており、その理由を突き止めようとしています。

<form name="myForm" id="myForm" method="post" action="">
  <label for="myField">Name</label>
  <input type="text" name="myField" id="myField">
  <input type="button" name="btnSubmit" id="btnSubmit" value="Submit">
</form>

アップデート:

*私が抱えている問題は、ボタンをクリックするとボタンが再び無効になることです: 誰かが私にこれが起こる理由を説明できますか? いくつかの値を入力してフィールドを離れると、ボタンは有効になりますが、クリックするとすぐに無効になります。

ただし、入力タイプをボタンに変更すると、ボタンをクリックしても無効になりません。なぜこれが起こるのかわかりません。これが、これがエラーまたは何らかのサポートの問題であると最初に考えた理由です。

ただ好奇心旺盛で、知識には知識の恩恵があります*。

4

3 に答える 3

2

あなたの not ステートメントは問題ないと思います。失敗していると確信していますか、デバッグしましたか?あなたの問題が本当にここにある可能性があります:

$('#btnSubmit').attr('disabled', true);

.attr()および.prop( )に関する jQuery ドキュメントを参照してください。仕組みを理解していないと予期しない結果が生じることが多いため、.prop()ここで使用する必要があります。.attr()

したがって、prop を使用するようにコードを変更し、それでも問題が解決しない場合は、not セレクターをデバッグしてください。

$('#btnSubmit').prop('disabled', true);

編集

あなたのコメントに基づいて、私はあなたの質問をもう一度見直しました。これは何が起こっているのですか:

  1. 値を入力してください
  2. ボタンで有効化
  3. ボタンを押す
  4. ページの投稿とポストバック後、ボタンは無効になります
  5. ポストバック後にボタンを有効にしたい

その場合、問題は、ページの読み込み時にボタンを無効にして、ぼかしイベントでのみ有効にすることです。ポストバック後、ぼかしは自動的に発生するだけではありませんが、最も簡単な解決策は、ボタンを無効にした後に手動でぼかしをトリガーすることです (実際には、ぼかしをトリガーする場合に無効にする必要はありません)。

$(document).ready(function () {
    $('#btnSubmit').prop('disabled', true);

    $('#myForm :input:not(#btnSubmit)').blur(function () {
        if ($('#myField').val() == '') {
            $('#btnSubmit').prop('disabled', true);
        } else {
            $('#btnSubmit').prop('disabled', false);
        }
    });

   $('#myField').blur();
});
于 2013-06-24T20:48:07.573 に答える
0

あなたのコードはここで動作します: http://jsfiddle.net/AstDerek/s5cyk/

使用しているコードで何が起こると思いますか?


元の答え:

あなたのコードが何をしているのかよくわかりませんがbutton:inputセレクターで a をターゲットにしようとしているようです。そのため、コードは期待どおりに機能しません。たぶん、このセレクターは仕事をすることができます:

$('#myForm :input:not(#btnSubmit), #myForm button:not(#btnSubmit)')
于 2013-06-24T19:06:10.480 に答える