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

このQ&Aに関連する最新のQ&A

A 回答 (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>

これで上のフォームに半角スペースを入力して、下のフォームにカーソルを移動させてみて下さい。
    • good
    • 0

先程書きましたとおり、半角英数字を表す正規表現は\wです。



ですが、名前に使われない文字もはじくとなると大変なことになります。例えばOS依存の文字(Windowsなら○で囲んだ数字など)やデフォルトとしてある★などのマーク、半角カタカナ、全角のアルファベット、その他の外国語など、それら全てをチェックしなければなりません。これは不可能です。

もし半角英数字及びアンダーバーのみをはじくのであれば、下記のようにすると可能です。
if(document.form.text.value.match(/\w/)){
alert("!!");
}

urizakaさんが仰られるようなことが可能だったら、もっと楽なんですけどね・・・。
    • good
    • 0

「全角入力以外をはじく」というのは、半角文字が入力された場合にアラートを出す、というようなことですか?


目的が分からなければ永遠にurizakaさんの質問に答えなければなりなくなりますので、どういう目的で何をしたいのかを明記していただければ幸いです。

因みに、半角英数字、及びアンダーバー(_)を意味する正規表現は\wです。それ以外という指定ならば\Wになります。

この回答への補足

urizakaです。

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

補足日時:2001/06/15 15:56
    • good
    • 0

>うーん、空欄を認識させてreplaceする…というやり方もないわけではないのですが、実はテキストボックス部分はユーザー名を入力する場所で、姓と名は


>必ず空欄を入れて分けることになっているので、そのやりかたはできないのです。

よく意味がわからないのですが、
「replaceしたものを変数に入れその変数に対しチェックする」
って方法ではだめなのですか?
テキストボックス部分は何も影響ありませんが?

見当違いのこといってたらすいません。
    • good
    • 0

何度もスイマセン。


誤字脱字が目立ちますね・・・。

「urizaka」と書いてしまいました。「urizakaさん」の誤りです・・・。申し訳ない。

この回答への補足

urizakaです

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

補足日時:2001/06/15 14:52
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/06/15 15:16

事前にスペースを削除(置換)してはそうですか?


もしくは、
if( A="" || A=" " || A=" ")
としては?

この回答への補足

urizakaです

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

補足日時:2001/06/15 13:46
    • good
    • 0

すいません、下の回答の補足です。


sumはフォーム名、textはテキストボックス名です。
HTML部分はこれです↓。

<FORM NAME="sum"><INPUT TYPE="text" NAME="text"></FORM>

この回答への補足

urizakaです。

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

補足日時:2001/06/15 13:49
    • good
    • 0

if(!document.sum.text.value || document.sum.text.value.match(/^ +$/)){


alert("無効");
}

これでどうでしょう?
    • good
    • 0

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

り方はどうでしょうか?

この回答への補足

urizakaです。

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

補足日時:2001/06/15 13:52
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QWordのテキストボックスの行間をつめたいのです

Wordのテキストボックスの行間をつめたいのです。

他者からもらった印刷物がありますが、
文字の高さが3.3mmで行間が3.6mm程度です。
Wordでやろうとしていますがなかなかできません。
テキストボックスの中に文字を入れればテキストボックスの上との行間が縮まりますが
テクストボックス内の行間が縮まりません。
どうしたらできますか?

Aベストアンサー

こんばんは!
↓の画像でテキストボックス内の行間を12ptでやってみました。
当方使用のWord2003の場合です。

左側のテキストボックスはデフォルト(ページ設定)の1行の行間そのままです。

(1)テキストボックス内の文字を範囲指定 → メニュー → 書式 → 段落
(2)「インデントと行間隔」タブ → 間隔の「行間」の下向き▼を選択 → 「固定値」を選択(自動で12ptになると思います)
このポイント数で好みの行間に設定できます。

※ 行間とは文字の上端~次の行の文字の上端までですので、行ピッチと言った方が判りやすいかもしれません。

すなわち、フォントサイズよりも小さいpt数を設定してしまうと文字が重なってしまいます。

以上、参考になれば良いのですが
的外れならごめんなさいね。m(_ _)m

Qブラウザ上のテキストボックスから数値を受け取って別のテキストボックスに計算結果を返す

超初心者です。
Cの勉強をしていたのですが、javascriptにも手を出してみました。
変数の考え方が違うせいか、理解が間違っているのか・・・

ブラウザ上でテキストボックスに数値を記入して、別なテキストボックスに計算結果を返すソースを考えていました。
以下のような感じです。

HTML
------------------------
<form>
林檎 100円 * <input type=text name=txt7>個 
<input type=button value="計算" onClick="func4(txt7)"><br>
合計金額は<input type=text name=txt8>円になります。
</form>
-------------------------
JS
------------------------
function func4(keisan){
document.form2.txt8.value=keisan*100;
}
------------------------
上記のように変数を使うとエラーになります。「NaN」が返ってきます。
変数を使用せずに、直接受け取る値を計算すれば出来たのですが・・・
ブラウザからなにかを入力させ、それを変数に代入した場合は数値(INT)型にはならないのでしょうか??
詳しい方、解説をお願いします・・・

超初心者です。
Cの勉強をしていたのですが、javascriptにも手を出してみました。
変数の考え方が違うせいか、理解が間違っているのか・・・

ブラウザ上でテキストボックスに数値を記入して、別なテキストボックスに計算結果を返すソースを考えていました。
以下のような感じです。

HTML
------------------------
<form>
林檎 100円 * <input type=text name=txt7>個 
<input type=button value="計算" onClick="func4(txt7)"><br>
合計金額は<input type=text name=txt8>円になります。
</form>...続きを読む

Aベストアンサー

> ~value="計算" onClick="func4(txt7)"
これだと、func4に"txt7"という変数(おそらく未定義)を渡すという
意味になります。以下のように記述してください。
onClick="func4(document.getElementsByName('txt7')[0]))"
あるいは"func4(document.form.txt7)"

> document.form2.txt8.value=keisan*100;
引数の keisan はテキストボックというオブジェクトなので、計算
できません。(数値じゃない!)
また、テキストボックスの中身は何でしょう?文字列ですね。
数字しか書いてなくても文字列です。だから 4 + 5 は "45"のように
文字連結になってしまいます。掲題のように乗算など不可能です。

先ず、中身を得るためvalueプロパティを参照しましょう。
また、これを数値化するためparseIntやparseFloatを使います。
document.form2.txt8.value=parseInt(keisan.value)*100; または
document.form2.txt8.value=parseFloat(keisan.value)*100;

> ~value="計算" onClick="func4(txt7)"
これだと、func4に"txt7"という変数(おそらく未定義)を渡すという
意味になります。以下のように記述してください。
onClick="func4(document.getElementsByName('txt7')[0]))"
あるいは"func4(document.form.txt7)"

> document.form2.txt8.value=keisan*100;
引数の keisan はテキストボックというオブジェクトなので、計算
できません。(数値じゃない!)
また、テキストボックスの中身は何でしょう?文字列ですね。
数字しか書いてなくても文字列です。...続きを読む

Qエクセル2002/テキストボックス内の文章の行間?

エクセル2002です。
テキストボックス内に書いた文章の行間を任意に変えることが可能ですか?

普通に書くとくっつきつぎで、一行あけると開きすぎなので、一行の半分くらいの行間にしたいのです。
テキストボックスの書式設定は見てみましたが、方法を見つけられませんでした。

Aベストアンサー

あまり良い方法と言えないかもしれませんが。

テキストボックス内に文字を入力します。
そしてテキストボックスの書式設定を出して、配置のタブを開きます。
文字の配置の縦位置を「均等割付」に設定します。
これでテキストボックスの縦の高さに合わせて、行間が広がります。
ちょうど良い行間にテキストボックスの高さを調節します。

QHTMLのテキストボックスへのドラッグ&ドロップについて

HTMLのテキストボックスに文字列(テキスト)をドラッグ&ドロップしたときに、イベントを発生させたいのですが分かりません。

<INPUT TYPE="text" NAME="test" VALUE="" ondragdrop="alert('test!')">
というのを作ってみましたが、ondragdropはファイルにしか対応していないみたいなので無理でした。
ondragoverは反応しましたが、マウスを離す前にイベントが発生するため、こちらの意図する動作にはなりません。

やはりそういうイベントハンドラは用意されていないのでしょうか?

Aベストアンサー

テキストをドラッグするテストをしていませんでした。すみません。
確かに動きませんね。

これでどうでしょう?

---
var t = {
text: '',
mousedown: 0
}

window.onload = function(){
var input = document.getElementById('test');
t.text = input.value;

input.onmouseover = function(){
if (t.mousedown && t.text != this.value) {
t.text = this.value;
alert('dropped');
}
}
input.onchange = function(){
text = this.value;
}
document.onmousedown = function(){
t.mousedown = 1;
}
document.onmouseup = function(){
t.mousedown = 0;
}
}
---

テキストをドラッグするテストをしていませんでした。すみません。
確かに動きませんね。

これでどうでしょう?

---
var t = {
text: '',
mousedown: 0
}

window.onload = function(){
var input = document.getElementById('test');
t.text = input.value;

input.onmouseover = function(){
if (t.mousedown && t.text != this.value) {
t.text = this.value;
alert('dropped');
}
}
input.onchange = function(){
text = this.value;
}
document.onmousedown = function(){
t.mous...続きを読む

Qパワポのテキストボックスの行間のデフォルト値の設定

パワポ2000を使っています。
テキストボックスを作ると必ず行間が9.99行となっているので、毎回1行に変更しています。作った時点に1行になるように、変更する方法がわかりません。
つまり、パワポのテキストボックスの行間のデフォルトを、現在の9.99行から1行に変更したらよいのですが、変更する方法がわかりません。

Aベストアンサー

行間を1行にしたテキストボックスを選択し、右クリックで「オートシェープの規定値」選択すると次からのテキストボックスは開業行になりませんか?

QJavaScript テキストボックス キーイベント

JavaScript テキストボックス キーイベント

こんにちは。趣味でプログラミングをしている者です。
タイマーを使って計算ドリルを作ったのですが、
特定のキーコードで正解かどうか判定する関数を呼び出そうとしたのですが、
テキストボックスにこたえを入力して、キーを押すたびに
「キーン」というような音が鳴るのですが、
その音は、どのような仕組みで鳴るのでしょうか?

また、音を鳴らさないようにする方法がありましたら、
教えていただけないでしょうか

よろしくお願いします

<html>
<head>
<script type="text/javascript">

function init()
{
document.attachEvent("onkeypress", KotaeAwase);
}

function KotaeAwase()
{
if( event.keyCode == 13)
{
var key = 1;
var kotae = parseInt( document.Form1.kotae.value );
var Result = document.Form1.result;

if( kotae == key ) Result.value = "せいかいです!";
else Result.value = "ちがいます";
}
}

</script>
</head>

<body onLoad="init();">
<form name="Form1">
<input type="text" name="kotae" size="20">
<br><br>
<input type="text" name="result" size="20">
<br>
</form>
</body>

</html>

JavaScript テキストボックス キーイベント

こんにちは。趣味でプログラミングをしている者です。
タイマーを使って計算ドリルを作ったのですが、
特定のキーコードで正解かどうか判定する関数を呼び出そうとしたのですが、
テキストボックスにこたえを入力して、キーを押すたびに
「キーン」というような音が鳴るのですが、
その音は、どのような仕組みで鳴るのでしょうか?

また、音を鳴らさないようにする方法がありましたら、
教えていただけないでしょうか

よろしくお願いします

<html>
<head>
<script t...続きを読む

Aベストアンサー

「キーン」というような音が鳴る

=>CPUのファンの音では?
休んでいたPCのCPUが処理のために加熱し、ファンが回るのでは。
静かなファンに換装したらどうでしょうか

Qテキストボックス内の行間の変え方

Microsoft Wordでテキストボックス内の行間を変えるにはどうしたらよいですか。
文字サイズを大きくすると、伴って行間も広くなってしまうのですが、行間だけを指定することができるでしょうか。教えて下さい。

Aベストアンサー

テキストボックス内のテキストを選択して右クリック
「段落」を選択してください。
行間の変更ができます。

Qスマホでテキストボックスの随時キー入力判定方法

テキストボックスがあり、そこに入力された文字列をキー入力の度に
取得し、その文字列をキーにDBを検索し結果を表示するシステムを
作成しています。ただし日本語入力に関しては変換中は無視して確定時に
DBの検索を行う仕様です。

JQueryのkeydownとkeyupイベントを利用してPCでは実現しています。
ただ、スマホ(Androidやiphone)だと、日本語入力の時に予測変換候補
みたいなのが表示されて、それを選んで入力を進める事が多いと思いますが、
この予測変換候補を選んでもkeydownもkeyupもkeypressもイベントが
発生しないようなので、随時入力文字列を取得する事ができません。
そこで、keydownやkeyupイベントではなくて、タイマーで一定間隔で
テキストボックスの入力文字を取得する事も試してみましたが、この
場合だと日本語変換途中も文字も取得できてしまい、さらに日本語変換中
かどうかの情報が得られないので、変換中は無視という要件が満たせません。

keydownもkeyupもkeypressも発生しないので、どうしようもなさそうな
気はしていますが、ダメ元で、何か良い方法がないかお知恵を借りたく
投稿させてもらいます。宜しくお願いします。

テキストボックスがあり、そこに入力された文字列をキー入力の度に
取得し、その文字列をキーにDBを検索し結果を表示するシステムを
作成しています。ただし日本語入力に関しては変換中は無視して確定時に
DBの検索を行う仕様です。

JQueryのkeydownとkeyupイベントを利用してPCでは実現しています。
ただ、スマホ(Androidやiphone)だと、日本語入力の時に予測変換候補
みたいなのが表示されて、それを選んで入力を進める事が多いと思いますが、
この予測変換候補を選んでもkeydownもkeyupもkeypressもイ...続きを読む

Aベストアンサー

こんにちは。

では、テキストボックスにフォーカスされている場合、
ウィンドウのどこを押してもvalを取得するというふうに変えてもダメですかね?
$(function(){
$("input:text").on("focus", function(){
$(window).on("click blur keydown keyup keypress change touchstart", function(){
var new_val = $("input:text").val();
$(".text").text(new_val);
});
});
});

さっきご飯食べながらだったので、
今ちょっと、作ってみました。
テキストエリアのリアルタイム取得で下のテキスト<p>に反映するみたいなのを。

私のアンドロイド5.1.1は大丈夫だったんですけど、iosは自信ないです。

QPPTのVBA 全てのテキストボックスの行間を最小

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また上記操作を自動記録しようといたしましても記入されません。
(PPT2007には自動記録が無いため、excel、wordでトライいたしましたが、無理でございました。。。)

一個のテキストボックスの操作方法さえ分かれば後は、
For each スライド
  For each テキストボックス
  :
  :
  Next
Next
みたいな感じで出来ると思うのでございますが。。

 もしお詳しい方がいらっしゃいましたら,お教えいただけないでしょうか。
どうぞよろしくお願いいたします。

【PPTのVBA 全てのテキストボックスの行間を最小に】

 今晩は、質問させていただきます。どうぞよろしくお願いいたします。
PPT2007でございます。

 手元に大量にあるPPTファイル群のテキストボックスの行間が全て広いため、
全て一括で小さくしてしまいたい次第でございます。
もしこれを手作業でやりますと、テキストボックスをアクティブにする→右クリック
→「段落」→「段落前」を0に。
となり時間がかかりますため、VBAでどうにかしたい次第でございます。

 しかしネットで検索しても出てこず、
また...続きを読む

Aベストアンサー

MKT_さん
こんにちは。

下記のコードでできると思います。
※PPT2003での対応ですが…

Sub 行間変更()
 Dim I  As Long
 Dim J  As Long
 For I = 1 To ActivePresentation.Slides.Count
  With ActivePresentation.Slides(I)
   For J = 1 To .Shapes.Count
    If .Shapes(J).HasTextFrame = msoTrue Then
     .Shapes(J).TextFrame.TextRange.ParagraphFormat.SpaceBefore = 0
    End If
   Next J
  End With
 Next I
End Sub

QテキストボックスをEnterキーで移動する際のビープ音

あるテキストボックスでEnterキーを押すと、次のテキストボックスに移動する
スクリプトを組んだのですが、動作はしますが必ず「ブー」というビープ音が
鳴ってしまいます。

たぶん、改行できないテキストボックス内でEnterキーを押すことで、「ダメだよー」
っという警告だと思うのですが、どうにかして消すことはできないのでしょうか?

どのような些細なことでも構いませんので、ご教授願います!

~Java Script~
function Change(){
if(event.keyCode==13) document.form.name2.focus();
}

~HTML~
<FORM NAME="form">
<INPUT TYPE="text" NAME="name1" onKeyDown="Change()">
<INPUT TYPE="text" NAME="name2">
</FORM>

Aベストアンサー

JavaScriptの方を次のように変えてください。
  function Change(){
    if (event.keyCode==13) {
      document.form.name2.focus();
      return false;
    }
    else return true;
  }

また、onKeyDown の方も
  onKeyDown="return Change()"
としてください。

エンターキーの場合は false を返し、キーの入力を無かったことにします。


人気Q&Aランキング

おすすめ情報