- ベストアンサー
文字列に空白を含んだ場合の処理
現在、文字列の入力チェックの関数を作成しています。 function checkMemberId() { if(document.form1.memberId.value==undefined){ alert("番号を入力してください。"); return false; }else if(??????????){ alert("空白が含まれています。"); return false; }else { alert("半角数字を入力してください。"); return false; } } 上記の else if の条件に、document.form1.memberIdに空白を含んだ文字列が入力されたらアラートメッセージを出すという処理を記述したいのですが、どういう処理を記述すればよいのでしょうか。 空白は全角・半角とも対象で、すべて空白が入力された時も同様の処理にしたいです。 以下、該当のHTML部です。 <form name="form1"> <input type="text" name="memberId"> </form> 以上、よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
else if( document.form1.memberId.value.indexOf(" ") >= 0 || document.form1.memberId.value.indexOf(" ") >= 0 ) で、どうでしょう?
その他の回答 (3)
- papillon68
- ベストアンサー率61% (42/68)
#3です。 >> 全て空白にした場合(全角・半角とも)、未入力と見なされてしまうようで、一番目の条件にヒットしてしまいます。空白=未入力ということなのでしょうか・・・。 と書かれてので、 > if(document.form1.memberId.value==undefined){ if(document.form1.memberId.value==""){ とした方がよいかもしれませんね。
お礼
回答ありがとうございます。 crumさんとpapillon68さんの回答を合わせて、 function checkMemberId() { if(document.form1.memberId.value==""){ alert("番号を入力してください。"); return false; }else if(document.form1.memberId.value.indexOf" ") >= 0 || document.form1.memberId.value.indexOf(" ") >= 0 ){ alert("空白が含まれています。"); return false; }else {alert("半角数字を入力してください。"); return false; } return true; } という記述にしたところ、問題なく動作させることができました。 ありがとうございました。
- papillon68
- ベストアンサー率61% (42/68)
bonotanさん、こんにちは。 逆転の発想になるのですが、 入力は半角数字のみ許可しようとされているようなので、 半角数字でなければエラーメッセージを出すようにするのはいかがでしょうか。 function checkMemberId() { if(document.form1.memberId.value==undefined){ alert("番号を入力してください。"); return false; } else if(! document.form1.memberId.value.match(/^[0-9]+$/)) { alert("半角数字を入力してください。"); return false; } return true; }
- osamuy
- ベストアンサー率42% (1231/2878)
正規表現を使って、空白にマッチするかをテストするとか。 var member_id = document.form1.memberId.value; if ( !member_id.match( / | / ) ){ alert( 'white space contained.' ); } 逆に、空白を先に削除してからチェックする方が楽かも。 member_id = document.form1.memberId.value.replace( / | /g, '' );
お礼
お返事遅れて、申し訳ございません。 正規表現は私には難しすぎて、よく理解できなかったので、もう少し勉強したいと思います(;_;) 回答ありがとうございました。
補足
回答ありがとうございます。 教えていただいた方法でやってみたのですが、文字が一文字でも入力された時は動作しますが、全て空白にした場合(全角・半角とも)、未入力と見なされてしまうようで、一番目の条件にヒットしてしまいます。空白=未入力ということなのでしょうか・・・。