jQueryを使った入力項目の制御について

NSさん (2012-10-22 12:44:55) http://bkan-osaka.jp/test/contact/form.html

初めまして、こんにちは。
メールフォームプロ大変ありがたく使わせていただいております。

質問なのですが、mfp.extensions.jsを使ってjQueryで
ラジオボタンに連動して次の選択肢どちらかが
入力不可になる、必須項目になるといった
フォームの制御をさせたく試行錯誤しております。
(設置URLでは「お母様はご健在ですか?」の部分です)

何とかほぼ希望通りの挙動をさせることができたのですが、
1点だけ
1)「お母様はご健在ですか?」で死亡を選択
2)「└お母様が死亡されている場合」の項目を未入力で確認ボタンを押し
エラー文言を表示させる
3)再度「お母様はご健在ですか?」で健在を選択
の場合、「└お母様が死亡されている場合」に表示されているエラー文言がすべて非表示になり入力不可になるようにしたいのですが、うまくいきません。

逆の場合
1)「お母様はご健在ですか?」で健在を選択
2)「└お母様がご健在の場合」の項目を未入力で確認ボタンを押し
エラー文言を表示させる
3)再度「お母様はご健在ですか?」で死亡を選択

だと「└お母様がご健在の場合」のエラーも消え、入力不可になりうまくいくのですが・・・
jQueryは双方同じように書いているはずなのですが、なぜでしょうか。
2バイト文字が関係あるのかとも思いましたが、ご健在の場合は2バイト文字込みのidでも動作しておりますので原因がわからず・・・

本体に関する質問ではないのでご回答いただけないかもしれませんし
素人なのでひどい書き方をしていると思いますが、
もし何か心当たりのある点がありましたら、
教えていただけると大変ありがたいです。

ややこしい質問で申し訳ありませんが、何卒よろしくお願いいたします。

Re:jQueryを使った入力項目の制御について

和田 (2012-10-29 08:24:54) www.synck.com

radioでの分岐の場合はcheckedとdisabledを使います。
document.getElementById(’radioのID’).checked でチェックされているか否かを判定することができます。
例えばradioAというIDのradioがチェックされている場合inputAを有効にし、inputBを無効にする場合であれば
if(document.getElementById(’radioA’).checked){
document.getElementById(’inputA’).disabled = false;
document.getElementById(’inputB’).disabled = true;
}
else {
document.getElementById(’inputB’).disabled = false;
document.getElementById(’inputA’).disabled = true;
}
となります。