- 締切済み
チェックが入っていなかったら処理を行いたい
いつもお世話になっております。 只今チェックボックスにチェックが入っていなかったらチェックを入れるという処理を Javascript、JQueryで行いたいのですが上手く動作せずに困っております。 if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( 'checked' ) == false ) { jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(3)').attr ( 'checked', 'checked' ); } 上記のソースで試したのですが反応が全くありませんでした。 if( $( 'input:checkbox[value="98"]' ).is( ':checked' ) ) { jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(2)').attr ( 'checked', 'checked' ); } チェックが入っている場合の判定ですが上記の場合は動きました。 記述ミス、根本的に書き方が違うなどございましたらご指摘ください。 ご回答のほどどうぞよろしくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- fujillin
- ベストアンサー率61% (1594/2576)
横からですが、ご提示の部分がうまく動かない本当の原因でしょうか? 念のため alert("直前までOK"); if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( 'checked' ) == false ) { alert("条件分岐処理中"); jQuery('input:checkbox[name="tax_input[pick-up][]"]').removeAttr ( 'checked' ); jQuery('input:checkbox[name="tax_input[pick-up][]"]:eq(3)').attr ( 'checked', 'checked' ); } alert("条件処理終了"); のようなことをすれば、どの行が思う通りでないのか特定でき、原因の絞込みができるかと思います。 ひょっとすると、最初のalert()が出ないのではないかと、想像しますが…
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 一応、実際にJavaScriptを組んでみてis(':checked')にて返ってくる値がどうなってるか試したので、判定方法は問題ないと思います。 jQueryのセレクタの場合HTMLの構成がちょっと変わるだけで違った結果になる可能性もあります。 うまく動かないというのが意図しない動きなのかエラーなのかわかりませんが、 載せられるならHTMLを含めて補足ください。 そして、どういった時にどういうふうにしたいかを明確にして頂ければもうちょっと的確に回答できると思います。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 度々すいません。 試してみましたがやはり、複数取得できている可能性があるとその要素内に一つでもチェックがあるとis(':checked')はtrueを返します。 <input type="checkbox" name="tax_input[pick-up][]"> <input type="checkbox" name="tax_input[pick-up][]"> <input type="checkbox" name="tax_input[pick-up][]"> こうあったとして、どれか一つでもcheckが入っていたら $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( 'checked' ) はtrueを返します。 なので意図した動きになっていない可能性があります。
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 HTMLがどのようになっているかわからないのでピンポイントでの回答が難しいのですが、 $( 'input:checkbox[name="tax_input[pick-up][]"]' )で取得している要素が意図しているものであるか確認してみてください。 (上記だと複数の要素を取得している気がします) 動いたと言われる下の取得ですとvalue=98のcheckboxと特定できています。 (value=98が2個あったらまた同じような話かもしれません) if( $( 'input:checkbox[value="98"]' ).is( ':checked' ) ) {
- LancerVII
- ベストアンサー率51% (1060/2054)
こんにちは。 if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( 'checked' ) == false ) { の部分が if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( ':checked' ) == false ) { では?
補足
ご指摘ありがとうございます。 自分でいじってるうちに外してしまったままでしたm(_ _)m if ( $( 'input:checkbox[name="tax_input[pick-up][]"]' ).is( ':checked' ) == false ) { こちらに修正してもやはり動きません。 他のJSの処理は動いているので これは何か他の処理が邪魔しているということなのでしょうか?
補足
非常に親切に対応していただいてありがとうございます。 ご指摘いただいた点を修正し一つのチェックボックスを対象に 判定をかけてみたのですがやはり動きませんでした。 その他のIf文も試してみたのですがIfに限りやはり上手く動かないようです・・・