プロが教えるわが家の防犯対策術!

過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。

フォームで未入力の項目に対してアラート&フォーカスされるようにしました。
ここに『住んでいる県』(プルダウン)を追加したいのですがどうしてもうまくいきません。

<script type='text/javascript'>
<!--
function check(frm){
var hissu=Array('name','zip','sex');
var hissu_nm = Array('名前','郵便番号','性別');
var len=hissu.length;
for(i=0; i<len; i++){
var obj=frm.elements[hissu[i]];
if(obj.type=='text' || obj.type=='textarea'){
if(obj.value==''){
alert(hissu_nm[i]+'は必須です');
frm.elements[hissu[i]].focus();
return false;
}
}else{
for(var j=0, chk=0; j<obj.length; j++){
if(obj[j].checked) chk++;
}
if(chk==0){
  alert(hissu_nm[i]+'は必須です');
return false;
}
}
}
return true;
}
//-->
</script>

どうかお分かりになる方よろしくお願いいたします。

A 回答 (4件)

radioボタンであることを判断するのと


プルダウン(selectタグ)であることの判断を
追加しました。
チェックボックスも判断するのであれば
type=='checkbox'も必要になります。

<script type='text/javascript'>
<!--
function check(frm){
var hissu=Array('name','zip','sex', 'aaa');
var hissu_nm = Array('名前','郵便番号','性別', 'あああ');
var len=hissu.length;
for(i=0; i<len; i++){
var obj=frm.elements[hissu[i]];
if(obj.type=='text' || obj.type=='textarea'){
if(obj.value==''){
alert(hissu_nm[i]+'は必須です');
frm.elements[hissu[i]].focus();
return false;
}
}else if(obj[0].type=='radio'){
for(var j=0, chk=0; j<obj.length; j++){
if(obj[j].checked) chk++;
}
if(chk==0){
alert(hissu_nm[i]+'は必須です');
obj[0].focus();
return false;
}
}else if(obj.tagName=='SELECT') {
if(obj.value == '') {
alert(hissu_nm[i]+'は必須です');
obj.focus();
return false;
}
}
}
return true;
}
//-->
</script>
<form action="" method=post onSubmit="return check(this);">
名前<input name="name" type="text" id="name">
<br>
郵便番号<input name="zip" type="text" id="zip">
<br>
<input name="sex" type="radio" value="radiobutton">
男 
<input name="sex" type="radio" value="radiobutton">

<br>
あああ
<select name="aaa">
<option value="">--選択してください--</option>
<option value="aaa">aaa</option>
<option value="bbb">bbb</option>
<option value="ccc">ccc</option>
</select>
<br>
<input type=submit value="送信">
</form>
    • good
    • 0
この回答へのお礼

ありがとうございます、ありがとうございます!
完璧に作動いたしました!!
何日も悩んでいたのにこんなに早く解決することができたなんて…!なんとお礼を言っていいやらわかりません。
本当にありがとうございました!

お礼日時:2006/07/14 18:34

VCATさん、ご指摘ありがとうございます。


optionを指定してしまっていますね。

動作確認をしていませんでした。
すみません。
    • good
    • 0

No.2さんの



> for(var j=0, chk=0; j<obj.length; j++){
> if(obj[j].checked) chk++;
> }
> if(chk==0){
>   alert(hissu_nm[i]+'は必須です');
> return false;
> }

一番上ということでしたら
if(obj[j].selectedIndex == 0) {
alert(hissu_nm[i]+'は必須です');
return false;
}
ですが、optionの場合は警告がちがいますね。
不可視の警告になります。
    • good
    • 0
この回答へのお礼

わざわざ見ていただいてありがとうございました。

お礼日時:2006/07/14 18:32

プルダウンの未選択とはどういったときでしょうか。


プルダウンの場合は常にどれかが選択された状態になっています。

一番上(selectedIndexが0)の場合は未選択ということでしょうか。
それともvalueが空(value="")のときが未選択でしょうか。


> for(var j=0, chk=0; j<obj.length; j++){
> if(obj[j].checked) chk++;
> }
> if(chk==0){
>   alert(hissu_nm[i]+'は必須です');
> return false;
> }

一番上ということでしたら
if(obj[j].selectedIndex == 0) {
alert(hissu_nm[i]+'は必須です');
return false;
}

valueが空ということでしたら
if(obj[j].value == '') {
alert(hissu_nm[i]+'は必須です');
return false;
}

この回答への補足

回答どうもありがとうございました!
すみません、<option value="">の場合でした。

字数制限で書けなかったのですが、この後

<form action="" method=post onSubmit="return check(this);">
名前<input name="name" type="text" id="name">
<br>
郵便番号<input name="zip" type="text" id="zip">
<br>
<input name="sex" type="radio" value="radiobutton">
男 
<input name="sex" type="radio" value="radiobutton">

<br>
<input type=submit value="送信">
</form>

と続き、最初のスクリプトはテキストエリアとラジオボタンに対するチェックでした。
ここで今回お教えいただいたものを追加すると言うことは、

}else{
からどう記入すればよろしいのでしょうか。
もしよろしければお教え願えないでしょうか。

補足日時:2006/07/14 17:14
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!