2012-04-04 15 views
2

クリックするとチェックボックスの状態をテストしようとしています。クリック時にチェックボックスの状態を確認する

私の問題は、変更イベントが発生した後ではなく、以前に発生したことがないことを報告しているため、常に真であると報告することです。

私は変更前にテストすることができます。 jQueryのを使用して

現在のコード - クラスのパッケージ "のチェックボックスすべて:

$(".package").click(function(){ 
    if($(this).is(":checked")){ 
     alert($(this).attr("checked")); 
    } 
}); 

これは、常に現在チェックされていないチェックボックスを選択する場合でも、trueを返します。

編集: OK機能が正常に機能したことを掃除した後、プロセスに干渉する古いjsがあるようです。皆さんありがとう。

+0

代わりにchangeイベントを使用できます。$( "。package")。change(function(){// value changed}); –

+0

残念ながら、変更イベントは同じ問題を引き起こします(FF atleastで、私はテストを展開していません) – mr12086

+0

Hiya、これを試してください:http://stackoverflow.com/questions/4817735/jquery-using-one-checkbox-to -uncheck-another-programaticallyがうれしい! –

答えて

2

チェックボックスのonchangeイベントを使用すると、cross-browser(hello IE!そして、はい、jQueryでも)。

次作品:

$('.package').click(function() { 
    console.log(this.checked) // There is no need for jQuery here 
}) 

ログの「本当の」あなたは、あなたがそれをオフにチェックボックス、および「偽」をご確認ください。

真剣には、$(this).attr('checked')または$(this).is(':checked')を使用すると、何もないjQueryceptionに過ぎません。

+0

残念ながら、すべてについて真実を報告しています。 – mr12086

+0

私はあなたの環境に関する詳細を知りたいです:) –

1

クリックイベントが発生し、実際のテキストボックスの変更が行われる前に、あなたが変更イベントをサブスクライブする必要があります。

$(".package").change(function(){ 
    if($(this).is(":checked")){ 
     alert($(this).attr("checked")); 
    } 
}); 

を編集:

$(".package").change(function(){ 
    if(this.checked){ 
     alert(this.checked); 
    } 
}); 
を動作するはずです、実際のJavaScriptオブジェクト自体を照会してください
+0

残念ながら、以前にチェックされていなくても、すべてについて真実を報告します。 – mr12086

+0

@ mr12086私の編集をチェックしてください。それがあなたのために働かないなら、あなたは私たちにあなたのHTMLを見せてくれますか? – mattytommo

1

変更イベントを代わりに使用することができます。この方法では、以前にチェックした状態が常にあなたが今読んだ内容の無効であることがわかります

$(".package").change(function() { 
    alert($(this).attr("checked")); 
}); 
+0

残念ながら、残念ながら、すべてについて真実を報告しています。 – mr12086

関連する問題