• ベストアンサー

文字列に空白を含んだ場合の処理

現在、文字列の入力チェックの関数を作成しています。 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> 以上、よろしくお願い致します。

noname#16621
noname#16621

質問者が選んだベストアンサー

  • ベストアンサー
noname#86752
noname#86752
回答No.1

else if( document.form1.memberId.value.indexOf(" ") >= 0 || document.form1.memberId.value.indexOf(" ") >= 0 ) で、どうでしょう?

noname#16621
質問者

補足

回答ありがとうございます。 教えていただいた方法でやってみたのですが、文字が一文字でも入力された時は動作しますが、全て空白にした場合(全角・半角とも)、未入力と見なされてしまうようで、一番目の条件にヒットしてしまいます。空白=未入力ということなのでしょうか・・・。

その他の回答 (3)

回答No.4

#3です。 >> 全て空白にした場合(全角・半角とも)、未入力と見なされてしまうようで、一番目の条件にヒットしてしまいます。空白=未入力ということなのでしょうか・・・。 と書かれてので、 > if(document.form1.memberId.value==undefined){ if(document.form1.memberId.value==""){ とした方がよいかもしれませんね。

noname#16621
質問者

お礼

回答ありがとうございます。 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; } という記述にしたところ、問題なく動作させることができました。 ありがとうございました。

回答No.3

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)
回答No.2

正規表現を使って、空白にマッチするかをテストするとか。 var member_id = document.form1.memberId.value; if ( !member_id.match( / | / ) ){ alert( 'white space contained.' ); } 逆に、空白を先に削除してからチェックする方が楽かも。 member_id = document.form1.memberId.value.replace( / | /g, '' );

noname#16621
質問者

お礼

お返事遅れて、申し訳ございません。 正規表現は私には難しすぎて、よく理解できなかったので、もう少し勉強したいと思います(;_;) 回答ありがとうございました。

関連するQ&A

  • 半角英数字のみの入力にエラーを返すには

    運営しているサイトに設置したコメントフォームからスパムがたくさん送信されてきます。 その対策として、「氏名のよみがな」入力欄が半角英数字のみの入力の場合にはアラートを出して投稿できないようにしたいです。 下記のようなJSを使用していますが、 if (!kana) { alert('氏名のよみがなを入力してください。'); return false; } の部分を変更して「半角英数字しか入力されていない場合、アラートを返す」ようにするには、どうしたら良いでしょうか? htmlの文字コードはShift_JISです。 よろしくお願いします。 function postComment { var name = eval('document.name.value'); var kana = eval('document.kana.value'); var email = eval('document.email.value'); var comment = eval('document.comment.value'); sum++; if (!name) { alert('氏名を入力してください。'); return false; } else { if (!kana) { alert('氏名のよみがなを入力してください。'); return false; } else { if (!email) { alert('メールアドレスを入力してください。'); return false; } else { if (!comment) { alert('コメントを入力してください。'); return false; } else { var confirm_text = '以下の内容で送信します\n' + 氏名:' + name + '\n よみがな:' + kana + '\n メール:' + email + '\n 本文:' + comment; if (!confirm(confirm_text)) { return false; } else { alert('コメントを送信しました。'); } } } } } }

  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • radioボタンでも、うまくアラート処理したいのですが・・・

    <SCRIPT LANGUAGE="JavaScript"> <!-- // ヌル及び空欄のチェックを行う function isFilled(elm) { if (elm.value == "" || elm.value == null) return false; else return true; } function isReady(form) { // 名前の空欄のチェックを行う if (isFilled(form.name) == false) { alert("お名前を入力して下さい。"); form.name.focus(); return false; } return true; } //--> </SCRIPT> フォームによるアンケートページを作成しているのですが、 textボックスで回答が書かれていなく、空欄の部分があったら アラートを出し、そのtextボックス部分に戻す、というような 上記プログラムの流れにしています。 textボックスではうまくいくのですが、radioボタンのとき、 うまくいきません(アラートは出るが、フォームに戻らない)。 回避策を教えてください。

  • プルダウンメニューを選択していない時に送信ボタンを押した場合、(必須の)アラートを表示したい。

    過去にほぼ同じ質問がありましたが、それでも解決出来なかったので質問させていただきました。 フォームで未入力の項目に対してアラートとフォーカスされるようにしました。 そこにプルダウンメニューを加えたものを作ろうとしたのですが、アラートの内容が全部同じ(職業が選択されていません)になってしまった事と、アラートは表示されたのですが、プルダウンメニューを選択してもアラートが出続けてしまいます。 プルダウンメニューが未選択の場合にのみアラートを表示するにはどうしたらよいでしょうか。 <SCRIPT language="JavaScript"> <!-- function chkHissu(frm){ var hissu=Array('name','kana','age','mail','sex','syumi'); 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; } function check(value){ //数字かどうかのチェック if(isNaN(value)){ alert("数値を半角で入力してください。"); //警告コメント document.form1.age.focus(); return false; } //入力があるかどうかのチェック if(!value){ alert("年齢を入力してください。"); //警告コメント document.form1.age.focus(); return false; } } function checkAd(address){ if(!address){ alert("メールアドレスを入力してください。"); } else if(address.indexOf("@",0)<=0){ alert("メールアドレスが正しくありません。"); document.form1.mail.select(); return false; } } //-- </SCRIPT> ご存知の方がいらっしゃいましたらご教授願います。

  • 入力された文字列の制限

    こんにちわ、初心者プログラマーのRammyと申します。 現在webで使うツールを開発中なのですが、web上にある入力フォーム内に 入力された文字列について、 1.半角英数字及び_-.のみ入力可能にする(メールアドレス判断用) 2.半角数字のみ入力可能にする(電話番号などの判断用) 3.文字列の長さをチェックし、一定の長さを超えたら送信させない 以上の入力制限処理をJAVAで行いたいのです。 現在、空白チェックのみ、チェック用のBeansを作成し、その中に public static boolean checkBlank(){  if (kind == null || user_name == null  || mail1 == null || mail2 == null  || tel == null || subject == null || text == null ) {  return false; }  if (kind .compareTo("") == 0 || user_name.compareTo("") == 0  || mail1.compareTo("") == 0 || mail2.compareTo("") == 0  || tel.compareTo("") == 0 || subject.compareTo("") == 0  || text.compareTo("") == 0 ) {  return false; } return true; } このように記述してありますが、Beans内に上記の1~3の機能をつけたし たいのです。が、いったいどのように記述したらいいのかわかりません。 1・2に関しては、入力可能な文字をあらかじめ決めておいて、入力された 文字列を分解し、入力可能文字と一致するかどうか判断する、というイメージ はできるのですが、どう書いたらいいものかわからないのです汗 3は、lengthメソッドをやはり使うのでしょうがどう書けばいいのか・・・汗 本当に初心者な質問で申し訳ないのですがご教授下さいませんでしょうか。 ヒントでもかまいませんのでご回答いただければ幸いです、宜しくおねがい 致します。

  • フォームの入力チェックをすると既に入力した項目が消える

    実は過去のQ&Aの中でご紹介されていた ホームページを拝見させて頂いたのですが、 残念ながら私の応用力が足りず、 上手く作ることが出来ません。 下記のように書いてみたのですが、 これでは未入力のメッセージにOKを押すと その前に入力したものが全て消えてしまいます。 何方か、正しい書き方をご教示下さいますよう 宜しくお願い申し上げます。 <script language="JavaScript"> <!-- function checkForm(){ if(document.form1.chk1.checked == false && document.form1.chk2.checked == false) { alert('チェックなし'); return false; } { flag = 0; for ( i = 0 ; i < document.form1.radiobtn.length ; i++){ if (document.form1.radiobtn[i].checked){ flag = 1; } } if (!flag){ alert('ラジオなし'); return false; } if(document.form1.sel.selectedIndex == 0){ alert('メニューなし'); document.form1.sel.focus(); return false; } if(document.form1.bun.value == ""){ alert('文字なし'); document.form1.bun.focus(); return false; } } return true; } //--> </script>

  • javaScriptで文字数制限

    フォームを作成していまして、alert指定を行っているのですが、一部半角数字も3桁設定ができなくて困っております。 数字は 100~999 までです。 下記のような記述となります。 どなたか 教えて下さい。宜しくお願い致します。 function WriterCheck() { var str = document.dataInputForm.no.value; if( str.match( /[^0-9]+/ ) ) { alert("ナンバーは半角数字3桁のみで入力して下さい。"); return false; } return true; }

  • Javascriptを勉強中でメールフォームを作っているのですが、

    Javascriptを勉強中でメールフォームを作っているのですが、 function check(){ if(document.form1.namae.value==""){ alert("お名前を入力してください。"); return false; } else{ return true; } } で名前が空白の時送信ボタンを押した時に警告メッセージが出るようにしようと思っています。 ボタンには以下のように書いています。 <form name="form1" action="mailto:mail@address" method="post" enctype="text/plain" onsubmit="check()"> そうすると警告は出ますが、処理を続行してメールも送れてしまいます。 教科書を見ると <form name="form1" action="mailto:mail@address" method="post" enctype="text/plain" onsubmit="return check()"> となっているのでそうすると問題ないのですが、なぜreturnを入れないといけないのかよくわかりません。 check()の中ですでにfalseかtrueの値が出ているのでreturnが要らないと思ったのですが・・ 初心者なのでよくわかっていません。 お願いいたします。

  • ラジオボタンとセレクトボックスの選択チェック

    ラジオボタン、セレクトボタンの選択チェックをしたいのですが 同時にチェックする場合どうすればよいのでしょうか。 失敗策ですが、参考までに↓ function check() { var flag=0; if( document.form1.seibetu.length){ flag=1; var i; for(i=0; i<document.form1.seibetu.length; i++){ if(document.form1.seibetu[i].checked){ flag=0; break; } } } else{ if(!document.form1.seibetu.checked){ flag=1; } } if(flag){ window.alert('性別が選択されていません'); return false; } else{ return true; } if(document.form1.nenrei.options[document.form1.nenrei.selectedIndex]. value==""){ flag=1; } if(flag){ window.alert('年齢が選択されていません'); return false; } else{return true; } }

  • JavaScriptで変数(しいてはfor文)を用いて、第x問のテキストフィールドが空白ですよみたいな警告を出したいのですが・・・

    for文の使い方とテキストフィールドが空白だと警告を表示させる方法は分かっているのですが、変数の扱いがいまいちよくわかりません。とりあえず次のソースを見てください。   i=1; if(document.form1."No" + i + "" .value == ""){ window.alert("第" + i + "問が未入力です"); // 入力漏れがあれば警告ダイアログを表示 return false; // 送信を中止 [省略] <FORM METHOD="POST" ACTION="form.cgi" name="form1" onsubmit="return disp()"> [省略] <a href="sample.wav">第1問</a> <INPUT TYPE="text" NAME="No1">  要は、第1問のsample.wavを聞いて、テキストに答えを入力してもらい、空白だと警告を出し、送信を中止するというものです。 ですが、変数iがif文に適用されず、困っています(document.form1.No1と入力すれば第1問が未入力ですになりますが・・・)。問題数がかなりの数になる予定なのでfor文が使えると非常にありがたいのですが、なんにしても変数が使えないと話になりません。ですので解決方法を教えてください。

    • ベストアンサー
    • HTML

専門家に質問してみよう