問い合わせフォームをを作成し、その中のmailaアドレスの入力、selectによる選択、textareaの入力で初めて送信ボタンを押せるようにしたいです。
一つのみの項目であればうまくいきますが、項目が複数になると反応してくれません。
###発生しいる問題・エラーメッセー
.submit-btnはdisplay:none;の状態で、非表示です。
入力及び選択済みで、 block要素の .submit-btn-blockを追加しようとしていますが、ボタンは非表示のままで反応がありません。
わたし的にはセレクトの選択で→$o.on( 'click', ckFlag ); というコードが違うのではと考えています。
わかるかたいらしたらこ教授お願いいたします。
私が参考にしたリンクを載せておきます。
リンク先
jsコード
var $s = $( '#submit' ), $t = $( '#mail-id','#text-id' ), $o = $( '#select-id' ); function toggleSubmitClass( flag ){ $s.prop( '.submit-btn', flag ); if ( flag ){ $s.addClass( 'submit-btn' ).removeClass( 'submit-btn-block' ); }else{ $s.addClass( 'submit-btn-block' ).removeClass( 'submit-btn' ); } } function ckFlag(){ var flag = $t.add($o.filter(':checked')).map(function(i,e){return $(e).val() || null}).length == $t.length + $o.length ; toggleSubmitClass( !flag ); } ckFlag(); $o.on( 'click', ckFlag ); $t.on( 'keydown keyup keypress change', ckFlag );
###試したこと
課題に対してアプローチしたことを記載してください
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
自分で書いたコードですか?どこかのコピペですか?
自分のフォーム用に一部付け加えましたが、コピーしました。
$t = $( '#mail-id','#text-id' )はtypoだと思いますのでご確認ください。
質問文のコードはコードブロックで囲んでいただけませんか? ```(バッククオート3つ)で囲み、前後に改行をいれるか、コードを選択して「<code>」ボタンを押すとコードブロックになります。また、コードの取得元のURLは記載されたほうが良いと思います。
Lhankor_Mhyさん ご投稿ありがとうございます。確認しましたが間違ってはいないようでした。
kei344さん ご指摘ありがとうございました。次回からはそのようにさせていただきます。ご迷惑おかけしました。
$t = $( '#mail-id','#text-id' ) は意図しているコードであるとのことですが、このコードは「 #text-id の内部要素である #mail-id 」のjQueryオブジェクトを返します( http://api.jquery.com/jQuery/#selector-context )。HTMLが提示されていないため不明ですが、質問の内容から #text-id も #mail-id もフォーム部品だと思いますので、ちょっとありえない構造だと思います。もし本当に、このjQueryコードが間違っていないのであれば、HTML構造に間違いがありそうな気がします。再度確認してみてください。
回答1件
あなたの回答
tips
プレビュー