0
 $("input[type=checkbox]").click(function(){
    alert("clicked");
    if($('#result').html().length) {
           $('button[type="submit"]').attr('disabled','disabled');
        } else { $('button[type="submit"]').removeAttr('disabled'); }
  });

上記のコード my if ステートメントは実行されていません。コンソールで if ステートメントを実行すると、正常に実行されますが、クリック関数にネストするとすぐに実行されます。アラートは表示されますが、送信ボックスはグレー表示されません。

私のコードの何が問題なのか誰でも知っています。

4

2 に答える 2

1
  1. コードをラップしていることを確認してくださいjQuery ready
  2. $(selector)どの DOM ノードとも一致しない場合はundefined、 を呼び出したときに返され.htmlます。したがって、を削除し.lengthます。( undefined.length-> エラーをスローします)
  3. .htmlにも変更.text$.trim()空白を削除する場合は追加できます。
  4. jQuery 1.6 以降を使用している場合は、prop代わりに使用します。attr

jQuery(function($) {
    $("input[type=checkbox]").click(function(){
        alert("clicked");
        if( $.trim($('#result').text()) ) {
            $('button[type="submit"]').prop('disabled', true);
        }
        else { 
            $('button[type="submit"]').prop('disabled', false);
        }
    });
});

コードを次のように最小化できます。

jQuery(function($) {
    $("input[type=checkbox]").click(function() {
        // Make sure myTest is an boolean:
        var myTest = Boolean( $.trim($('#result').text()) );
        // Send myTest as 2th argument:
        $('button[type="submit"]').prop('disabled', myTest);
    });
});
于 2013-05-26T20:02:00.637 に答える
0

これを使って

if($('#result').text()=='') $('button').prop('disable',true);
else $('button').prop('disable',false);
于 2013-05-26T20:00:58.987 に答える