- ベストアンサー
テキストボックスの空欄を消したい
urizakaと申します。 さて、現在JavascriptとHTMLで、HTMLのテキストボックスが空欄になって いた場合エラーになるという処理を作っているのですが、その時に空欄の 内容が""の時だけでなく、" "(スペースキー一回)や" "(スペースキー2回) 等の場合も、テキストボックスが空欄であると認識してエラーが出るように したいのですが、何か良い方法ってないでしょうか? VBScriptの場合は、" "を""に変換して比較するという方法が使えるの ですが… すみませんが、宜しくお願いします。 環境は、JBuilder4です。
- みんなの回答 (9)
- 専門家の回答
質問者が選んだベストアンサー
No.2 No.3です。 下記のスクリプトで何かアクションを起こしましたか? match以降の意味は正規表現を使用しています。/で囲まれた部分が正規表現であることを意味します。^と+の間に半角スペースがあります。 まず+はその直前の文字(この場合は半角スペース)が一個以上あることを表しています。次に^は文字列がその一個以上の半角スペースで始まっていることを表し、$は文字列が一個以上の半角スペースで終わっていることを表します。 つもりこの正規表現の意味は「文字列に半角スペースが一個以上あり、その文字列が半角スペース一個以上で始まり、そのまま終わっている」です。urizakaの求めている半角スペースのみの場合という意味です。 試しに以下のソースを張り付けて下さい。 <SCRIPT LANGUAGE="JavaScript"> <!-- function check(){ if(!document.sum.text.value || document.sum.text.value.match(/^ +$/)){ alert("無効"); } } //--> </SCRIPT> HTMLは <FORM NAME="sum"><INPUT TYPE="text" NAME="text" onChange="check()"><BR> <INPUT TYPE="text" NAME="other"></FORM> これで上のフォームに半角スペースを入力して、下のフォームにカーソルを移動させてみて下さい。
その他の回答 (8)
- kodai_sumio
- ベストアンサー率45% (29/64)
先程書きましたとおり、半角英数字を表す正規表現は\wです。 ですが、名前に使われない文字もはじくとなると大変なことになります。例えばOS依存の文字(Windowsなら○で囲んだ数字など)やデフォルトとしてある★などのマーク、半角カタカナ、全角のアルファベット、その他の外国語など、それら全てをチェックしなければなりません。これは不可能です。 もし半角英数字及びアンダーバーのみをはじくのであれば、下記のようにすると可能です。 if(document.form.text.value.match(/\w/)){ alert("!!"); } urizakaさんが仰られるようなことが可能だったら、もっと楽なんですけどね・・・。
- kodai_sumio
- ベストアンサー率45% (29/64)
「全角入力以外をはじく」というのは、半角文字が入力された場合にアラートを出す、というようなことですか? 目的が分からなければ永遠にurizakaさんの質問に答えなければなりなくなりますので、どういう目的で何をしたいのかを明記していただければ幸いです。 因みに、半角英数字、及びアンダーバー(_)を意味する正規表現は\wです。それ以外という指定ならば\Wになります。
- Masazo-
- ベストアンサー率48% (12/25)
>うーん、空欄を認識させてreplaceする…というやり方もないわけではないのですが、実はテキストボックス部分はユーザー名を入力する場所で、姓と名は >必ず空欄を入れて分けることになっているので、そのやりかたはできないのです。 よく意味がわからないのですが、 「replaceしたものを変数に入れその変数に対しチェックする」 って方法ではだめなのですか? テキストボックス部分は何も影響ありませんが? 見当違いのこといってたらすいません。
- kodai_sumio
- ベストアンサー率45% (29/64)
何度もスイマセン。 誤字脱字が目立ちますね・・・。 「urizaka」と書いてしまいました。「urizakaさん」の誤りです・・・。申し訳ない。
お礼
すみません、よく読んだらちゃんとやり方が書いてありましたね。 ありがとうございました。 ところで、全角入力以外をはじく、という場合にはどうなるのでしょうか? まさか全角文字を全部入れるわけにもいかないし…
補足
urizakaです いえいえ、非常に役立っております。 ところで、半角スペースは記述した方法で分かったのですが、 全角スペースだと正規表現ではどのように記述するのでしょうか?
- mangetsu_k
- ベストアンサー率40% (33/81)
事前にスペースを削除(置換)してはそうですか? もしくは、 if( A="" || A=" " || A=" ") としては?
補足
urizakaです いや、実はそのテキスト部分というのはユーザーの名前を入力する場所で、 入力規則として、必ず姓と名は分離(スペースを入れる)ことになっているので 空欄を事前に削除するというのはできないんですよ…うーん、説明不足でした。 すみません。
- kodai_sumio
- ベストアンサー率45% (29/64)
すいません、下の回答の補足です。 sumはフォーム名、textはテキストボックス名です。 HTML部分はこれです↓。 <FORM NAME="sum"><INPUT TYPE="text" NAME="text"></FORM>
補足
urizakaです。 そのように入力してみたのですが無効とエラーが出てしまいました。 この例にあるmatch以降ってどういう意味なのでしょうか? すみませんが、教えてください。
- kodai_sumio
- ベストアンサー率45% (29/64)
if(!document.sum.text.value || document.sum.text.value.match(/^ +$/)){ alert("無効"); } これでどうでしょう?
私の知識ではやり方がわからないのですが、何か必須項目的な文字(または数字や記号)をチェックするような形で空欄を認識させると言うやり方はどうでしょうか?
補足
urizakaです。 うーん、空欄を認識させてreplaceする…というやり方もないわけではないのですが、実はテキストボックス部分はユーザー名を入力する場所で、姓と名は 必ず空欄を入れて分けることになっているので、そのやりかたはできないのです。 ただ、テキストボックス内で文字データを認識するまでチェックを行い、文字データがなかったら空欄を全部置き換えて…という方法ができる気もするので、文字データがあることを認識する方法がないかを探してみます。 でも、もしご存知でしたら教えてください。
補足
urizakaです。 説明不足でしたね、すみません。 担当者の名前を入力するテキストボックスに全角漢字、ひらがな、カタカナ 以外のあらゆる文字が入力された場合にエラーがでるようにしたいのです。 (つまり、日本人の名前としては使わない文字である英語、記号が入力された 場合にエラーがでるようにしたいということです。ちなみに外国人の名前は 全角カタカナで入力します)。 すみませんが教えてください。