• ベストアンサー

テキストボックスの空欄を消したい

urizakaと申します。 さて、現在JavascriptとHTMLで、HTMLのテキストボックスが空欄になって いた場合エラーになるという処理を作っているのですが、その時に空欄の 内容が""の時だけでなく、" "(スペースキー一回)や" "(スペースキー2回) 等の場合も、テキストボックスが空欄であると認識してエラーが出るように したいのですが、何か良い方法ってないでしょうか?  VBScriptの場合は、" "を""に変換して比較するという方法が使えるの ですが…  すみませんが、宜しくお願いします。  環境は、JBuilder4です。

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

  • ベストアンサー
回答No.5

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)

回答No.9

先程書きましたとおり、半角英数字を表す正規表現は\wです。 ですが、名前に使われない文字もはじくとなると大変なことになります。例えばOS依存の文字(Windowsなら○で囲んだ数字など)やデフォルトとしてある★などのマーク、半角カタカナ、全角のアルファベット、その他の外国語など、それら全てをチェックしなければなりません。これは不可能です。 もし半角英数字及びアンダーバーのみをはじくのであれば、下記のようにすると可能です。 if(document.form.text.value.match(/\w/)){ alert("!!"); } urizakaさんが仰られるようなことが可能だったら、もっと楽なんですけどね・・・。

回答No.8

「全角入力以外をはじく」というのは、半角文字が入力された場合にアラートを出す、というようなことですか? 目的が分からなければ永遠にurizakaさんの質問に答えなければなりなくなりますので、どういう目的で何をしたいのかを明記していただければ幸いです。 因みに、半角英数字、及びアンダーバー(_)を意味する正規表現は\wです。それ以外という指定ならば\Wになります。

urizaka
質問者

補足

urizakaです。 説明不足でしたね、すみません。 担当者の名前を入力するテキストボックスに全角漢字、ひらがな、カタカナ 以外のあらゆる文字が入力された場合にエラーがでるようにしたいのです。 (つまり、日本人の名前としては使わない文字である英語、記号が入力された 場合にエラーがでるようにしたいということです。ちなみに外国人の名前は 全角カタカナで入力します)。  すみませんが教えてください。

  • Masazo-
  • ベストアンサー率48% (12/25)
回答No.7

>うーん、空欄を認識させてreplaceする…というやり方もないわけではないのですが、実はテキストボックス部分はユーザー名を入力する場所で、姓と名は >必ず空欄を入れて分けることになっているので、そのやりかたはできないのです。 よく意味がわからないのですが、 「replaceしたものを変数に入れその変数に対しチェックする」 って方法ではだめなのですか? テキストボックス部分は何も影響ありませんが? 見当違いのこといってたらすいません。

回答No.6

何度もスイマセン。 誤字脱字が目立ちますね・・・。 「urizaka」と書いてしまいました。「urizakaさん」の誤りです・・・。申し訳ない。

urizaka
質問者

お礼

すみません、よく読んだらちゃんとやり方が書いてありましたね。 ありがとうございました。 ところで、全角入力以外をはじく、という場合にはどうなるのでしょうか? まさか全角文字を全部入れるわけにもいかないし…

urizaka
質問者

補足

urizakaです いえいえ、非常に役立っております。 ところで、半角スペースは記述した方法で分かったのですが、 全角スペースだと正規表現ではどのように記述するのでしょうか?

回答No.4

事前にスペースを削除(置換)してはそうですか? もしくは、 if( A="" || A=" " || A=" ") としては?

urizaka
質問者

補足

urizakaです いや、実はそのテキスト部分というのはユーザーの名前を入力する場所で、 入力規則として、必ず姓と名は分離(スペースを入れる)ことになっているので 空欄を事前に削除するというのはできないんですよ…うーん、説明不足でした。 すみません。

回答No.3

すいません、下の回答の補足です。 sumはフォーム名、textはテキストボックス名です。 HTML部分はこれです↓。 <FORM NAME="sum"><INPUT TYPE="text" NAME="text"></FORM>

urizaka
質問者

補足

urizakaです。 そのように入力してみたのですが無効とエラーが出てしまいました。 この例にあるmatch以降ってどういう意味なのでしょうか? すみませんが、教えてください。

回答No.2

if(!document.sum.text.value || document.sum.text.value.match(/^ +$/)){ alert("無効"); } これでどうでしょう?

noname#2601
noname#2601
回答No.1

 私の知識ではやり方がわからないのですが、何か必須項目的な文字(または数字や記号)をチェックするような形で空欄を認識させると言うやり方はどうでしょうか?

urizaka
質問者

補足

urizakaです。 うーん、空欄を認識させてreplaceする…というやり方もないわけではないのですが、実はテキストボックス部分はユーザー名を入力する場所で、姓と名は 必ず空欄を入れて分けることになっているので、そのやりかたはできないのです。 ただ、テキストボックス内で文字データを認識するまでチェックを行い、文字データがなかったら空欄を全部置き換えて…という方法ができる気もするので、文字データがあることを認識する方法がないかを探してみます。  でも、もしご存知でしたら教えてください。

関連するQ&A

  • エクセル表にある空欄のテキストボックスを消したい

    共有でファイルでエクセル表を使用しているのですが 使用者の中に何故か空欄のテキストボックスを貼り付けたまま 消さずに保存する人が居るようで、 ファイルごとコピーした際に倍増し、 日が経つとファイルを開く時間がかかるようにまでなり困っています。 立場上、犯人探しをする訳にもいかず 地道に空欄のテキストボックスを探しては 幾つも消しているのですが、なかなか見つからず ファイルが(何分も!)開かなくなった場合は、最初から書式自体を作り直したりまでしています。 空欄のテキストボックスということで、エクセルを開いた時には 確認する事が出来ないのですが どこにテキストボックスがあるか、すぐ確認できる方法 又はエクセル上にあるテキストボックスをまとめて消去できる方法などは ございますでしょうか? 御回答お待ちしております。

  • 見えないテキストボックスを作りたい

    urizakaと申します。 さて、さっそく質問なのですが、目に見えないテキストボックスって作るのは可能なのでしょうか?  実は、現在JSPのプログラムを作っているのですが、その際、ページにテキストボックスがひとつしかない状態でそのテキストボックスにカーソルがある状態でEnterキーを押すと、勝手にサーブレットに飛んでしまうという症状が発生したため、もうひとつユーザーの目に見えないテキストボックスを作りたい(テキストボックスが二つある場合はそのような症状は起きない)と思い、<INPUT TYPE="TEXT" name="DUMMY" SIZE="0">と表示してもある程度の大きさのテキストボックスが表示されてしまいます。  いろいろと本などで調べてみたのですが、それらしいことすら書いていない状態なので・・・すみませんが、ご存知の方が教えていただけないでしょうか?  宜しくお願いします。

    • ベストアンサー
    • HTML
  • テキストボックスの値同士を比較したい

    urizakaと申します。 さて、現在JSPでプログラムを組んでいるのですが、その際にHTMLフォームの テキストボックスとテキストボックスの値を比較して、同じ値だった場合に イベントが起きるようにしたいのですが、うまくいきません。 具体的には以下のようなソースコードを書いたのですが… <HTML> <BODY> <FORM name="Del"> <input type="text" name="1"> <input type="text" name="2"> (中略) </FORM> <script language="JavaScript"> if (Del.1.value == Del.2.value){ document.writeln("同じ値です"); } (以下省略)  以下省略で省略されている部分に関しては問題なく動くので この場所以外でのエラーはかんがえられないのですが…すみません が上記の方法についてご存知の方は教えていただけませんでしょうか?  宜しくお願いします。

  • テキストボックスから勝手に画面遷移される。

    urizakaです。 現在J-BUilderを使ってテキストボックスに入力された内容をDBに送るという JSPの画面を作っているのですが、そこでテキストボックスでEnterキーを押すと 勝手にサーブレットに遷移されるというエラーが発生してしまいます。最初は、 <Form name="Insert" Method="POST" Action="…"> (…にはサーブレットのアドレスが入ります) と設定しているので、それでActionに登録されたサーブレットに遷移してしまう のだと思い、ActionをJSP上のボタンが押された時に設定されるようにしたのですが、そうするとそのページが表示される前に実行されるサーブレットに移動してしまいます。もしかすると、HTMLの設定の問題なのかもしれませんが、すみませんが この件についてご存知の方がいらっしゃいましたら教えてください。  宜しくお願いします。

    • ベストアンサー
    • Java
  • テキストボックスに入力されている文字種類のチェックがしたい

    urizakaです。 さて、テキストボックスに入力されている文字が、指定した文字の種類か どうかを識別し、そうでなかった場合はエラーを返すという処理を考えて いるのですが(たとえば、カタカナで入力するように指示している場所で カタカナ以外の入力があった場合はエラーを返す)、何か良い方法って ありますでしょうか?  すみませんが、宜しくお願いします。

  • テキストボックスでの行の認識

    テキストボックスで2行以上入力不可にしたいんですが、方法が分かりません。 単に改行を含むのならEnterキーの2回目を押せなくすればいいのですが、テキストボックスって端までいくと自動的に2行になりますよね。この場合は改行コードが入ってないんです。だから単純にEnterキーの制御だけでは出来ないんです。 なにか良き方法が有れば教えていただけないでしょうか?

  • テキストボックスの文字の大きさを変更するには

    タグ打ちでWebページを作っています。 テキストボックスに関する質問です。 テキストボックス本体の大きさは下のように記述すれば指定できることはわかっているのですが、 <input type="text" size=xx> テキストボックス内の「文字」の大きさを変更するにはどうすればよいでしょうか。 HTMLタグ、JavaScript、CSSでできる方法を教えてください。

  • フォームのテキストボックス内での処理

    ●VB6.0を使用しているのですが、テキストボックスで全角スペースのみ又は半角スペースのみの入力をした時msgboxでエラー処理するにはどうしたらいいのでしょうか? ●またテキストボックスで半角英数しか入力できないようにする処理があれば教えていただけますか?

  • テキストボックスについて

    使っている環境はVB6.0です。 テキストボックスが2つあり、1つ目のテキストボックスでEnterキーを押すとテキストボックスの2つ目にフォーカスが移動するというものなのですが、その移動したときに2つ目のテキストボックスの文字が選択されている状況を作りたいのですが何か良い方法はないでしょうか? 文字は最初から入っている前提でお願いします。

  • テキストボックス空欄への追加入力

    リストボックス1であ行の氏名項目を選択実行しテキストボックス1~8に入力された後にか行にリストボックス項目を変え氏名を選択実行した場合、下記のコードではテキストボックス1からまた上書きされる。テキストボックス空欄に続けて選択項目が入力される方法はあるのでしょうか。悩んでいます。どなたかコードがわかる方よろしくお願いします。 Private Sub 実行Cnd_Click() Dim cnt As Integer   Dim i As Integer If ListBox1.ListIndex = -1 Then Exit Sub cnt = 1 For i = 0 To ListBox1.ListCount - 1 If ListBox1.Selected(i) Then Me.Controls("TextBox" & cnt).Text = ListBox1.List(i) cnt = cnt + 1 End If Next End Sub

専門家に質問してみよう