ラジオボタンでチェックさせ、その値を別のテキストフィールドに反映させる方法。
例えば、メールアドレス入力のときに@以降を選択させることができる。
1 2 3 4 5 6 7 8 9 10 11 |
<input type="email" name="your-email"> <p>※@以降を以下から選択できます。</p> <ul class="addressList"> <li><label><input type="radio" name="addressSelect" value="" checked>選択なし</label></li> <li><label><input type="radio" name="addressSelect" value="@docomo.ne.jp">@docomo.ne.jp</label></li> <li><label><input type="radio" name="addressSelect" value="@ezweb.ne.jp">@ezweb.ne.jp</label></li> <li><label><input type="radio" name="addressSelect" value="@softbank.ne.jp">@softbank.ne.jp</label></li> <li><label><input type="radio" name="addressSelect" value="@yahoo.co.jp">@yahoo.co.jp</label></li> <li><label><input type="radio" name="addressSelect" value="@gmail.com">@gmail.com</label></li> </ul> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$(function(){ var addressSelect = $('input[name="addressSelect"]'); var yourEmail = $('input[name="your-email"]'); addressSelect.change(function(){ var selectVal = $(this).val(); var getAddressData = yourEmail.val(); var posData = getAddressData.indexOf('@'); if(posData < 0) { addressData = getAddressData; } else { addressData = getAddressData.substring(0,posData); } yourEmail.val(addressData + selectVal); }); }); |
8行目の
1 |
var posData = getAddressData.indexOf('@'); |
で、テキストフィールド内の@以降の文字列を取得。
1 2 3 4 5 |
if(posData < 0) { addressData = getAddressData; } else { addressData = getAddressData.substring(0,posData); } |
もし@以降に文字列があれば、@までの文字列を取得する。
@以降に文字列がなければ、全ての文字列を取得する。
これにより、例えば
hogehoge@gmail.com
と既に入力していても、@以降のみを変更することが可能。
そんな処理は必要なく、ただ反映させたいだけであれば上記をまるっと削除し、
1 2 3 4 5 6 7 8 9 10 11 |
$(function(){ var addressSelect = $('input[name="addressSelect"]'); var yourEmail = $('input[name="your-email"]'); addressSelect.change(function(){ var selectVal = $(this).val(); var getAddressData = yourEmail.val(); yourEmail.val(getAddressData + selectVal); }); }); |
これだけでOK。
ラジオボタンで値を選択すると、テキストフィールドに入力した値は削除され上書きされる。