2010-11-26 3 views
4

チェックボックスをオンにしたときにsomのテキスト入力を有効または無効にするためのコードがあります。使用するjqueryイベントはどれですか?

$(document).ready(function(){ 
    $(":checkbox").change(function(){ 
     if(this.checked){ 
      $("input:text").attr('disabled', true); 
     } else { 
      $("input:text").attr('disabled', false); 
     } 
     }); 
}); 

ユーザーがチェックボックスをクリックしたときに動作しているようですが、JavaScriptを呼び出すことによって、チェックボックスの値を変更することができます。

$(":checkbox").attr('checked', true); 

チェックボックスは、イベントが発生しませんジャバスクリプトによって変更された場合。私はclick()イベントで試しましたが、同じように起こります。

ありがとうございました。

答えて

1

手動で変更イベントを起動します。

$(":checkbox").change(); 
1

申し訳ありませんが、私はあまりにも単純化されていますが、あなたはそれがチェックボックスの値を変更するたびにJavaScriptが手動でイベントを呼び出す任せることはできない場合は?

1

手動でイベントを発生しようとすることができます:

$(":checkbox").attr('checked', true); 
$(":checkbox").change(); 

または

$(":checkbox").attr('checked', true).change(); 
0

ジャバスクリプトを通じてチェックボックスを変更するとイベントを発生しない理由を私は知りません。 しかし、私はこれのための解決策を持っています。

は関数として

function(){ 
     if(this.checked){ 
      $("input:text").attr('disabled', true); 
     } else { 
      $("input:text").attr('disabled', false); 
     } 
     } 

を作ります。 関数のようなcb_change_handler(){...} とuはjavascriptで値を変更するときにこの関数を手動で使用できます。

1

あなただけ.trigger()手動change eventことができます。

$('input:checkbox').trigger('change'); 

あなたは:checkboxのようなセレクタを使用しないでください。ユニバーサル*セレクタを暗黙的に使用することで、サイトのすべてのノードにクエリが実行されますが、かなり悪いです。つまり、かなり遅いです。

は、すべてのチェックボックス要素をクエリしますが、classまたはidで特定の要素をクエリする必要があります。

Ref。:.trigger()

4

まず、あなたが.attr('disabled', bool).checkedにブール値を渡しているので、のはこのように、それを利用しましょう、ブール値である、のスリムそのイベントハンドラダウンを聞かせて:

$(function(){ 
    $(":checkbox").change(function(){ 
    $("input:text").attr('disabled', this.checked); 
    }); 
}); 

次に変更するとき値は、プログラムだけでこのように、同様changeイベントをトリガ:パラメータなしの

$(":checkbox").attr('checked', true).change(); 

.change()あなたのイベントハンドラを引き起こします.trigger("change")のショートカットです走る。

関連する問題