• ベストアンサー

フォーム名に指定文字列が含まれている場合の処理

<script language="JavaScript"><!-- if (txt.word.value.length < 1) { alert(""); } // --></script> <input type=text name=wordabc size=50 value=""> <input type=text name=wordxxx size=50 value=""> <input type=text name=wordzzz size=50 value=""> nameにwordが含まれていた場合にjavascriptで処理させたいのですが、txt.word.value.length の部分をどのように変更すればいいのでしょうか?javascriptは素人並みの知識です。よろしくお願いいたします。

  • fx2
  • お礼率93% (29/31)

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

いまいちわからないところもありますがこんな風な感じですか? <script language="JavaScript"> function func(f){ for(var i=0;i<f.length;i++){ if(f[i].type=="text" && f[i].name.match(/word|comment|title/) && f[i].value.length ==0) { alert("「"+f[i].name+"」フィールドに入力してください"); f[i].focus(); return false } } } </script> <form> <input type=text name="word123" size=50 value=""> <input type=text name="comment456" size=50 value=""> <input type=text name="title789" size=50 value=""> <input type=submit value='送信' onclick='return func(this.form)'> </form>

fx2
質問者

お礼

有難うございます。f[i].focus(); return false が必要だったんですね。これに少し変更を加えまして、おかげ様でやりたいことが出来ました。

その他の回答 (3)

  • VCAT
  • ベストアンサー率20% (16/79)
回答No.3

name属性つかってるなら、コレだけじゃムリでしょ。 それに、全部にwordは含まれているから意味ないような。 この中で、xxxを含むものを抜き出すというのなら書きようも あると思うけど。

fx2
質問者

お礼

有難うございます。逆に排除したい文字列が数字だった場合には、数字のみを無効化することは可能でしょうか?数字は1~999までのランダムな数値です。 以下スクリプトはランダムな数値が入らなければ正常に動作しています。 <script language="JavaScript"> function func(f){ if (f.word.value.length < 1) { alert("message1"); } else { if (f.comment.value.length < 1) { alert("message2"); } else { if (f.title.value.length < 1) { alert("message3"); } else { f.submit(); } } } } </script> <form> <input type=text name="word(1~999までのランダム数値)" size=50 value=""> <input type=text name="comment(1~9999までのランダム数値)" size=50 value=""> <input type=text name="title(1~9999までのランダム数値)" size=50 value=""> <input type=submit value='送信' onclick='func(this.form); return false'> </form>

fx2
質問者

補足

追記。 1~999までの数値を無効化(無視)して動作させるか、または、No1さん、No2さんに教えていただいたように文字列をマッチさせて動作させる、どちらの方法でも、動作すればいいです。 説明下手で申し訳ないですが、どうぞよろしくお願いいたします。

  • Hardking
  • ベストアンサー率45% (73/160)
回答No.2

フォーム中の全inputオブジェクトから名前にwordが 含まれるオブジェクトを抜粋するのはどうでしょう。 obj = document.getElementsByTagName('input'); for(var i=0; i < obj.length; i++){ pos = obj[i].name.indexOf("word",0); if (pos > -1) { //ここ以降にしたい処理を記述 } }

fx2
質問者

補足

有難うございます。おかげさまでやりたい事ができました。あと実際に利用するフォームでは、name="word文字列"は一つのみですので、繰り返す必要がありません。以下のようにして使う予定なのですが、この場合はどのようにすればいいのでしょうか。説明不足で申し訳ございません。お手数ですが、よろしくお願いいたします。 <input type=text name="word排除文字列" size=50 value=""> <input type=text name="comment排除文字列" size=50 value=""> <input type=text name="title排除文字列" size=50 value="">

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

こんなもんでどうでしょう? <script language="JavaScript"> function func(f){ for(var i=0;i<f.length;i++){ if(f[i].name.match("word") && f[i].value.length < 1) { alert(""); } } } </script> <form> <input type="text" name="wordabc" size="50" value=""> <input type="text" name="wordxxx" size="50" value=""> <input type="text" name="wordzzz" size="50" value=""> <input type="button" value="実行" onClick="func(this.form)"> </form>

fx2
質問者

お礼

送信ボタンが押せないのですが、f.submit();を追加すればいいのでしょうか? 通常は、 if (txt.comment.value.length < 1) { alert("error"); } else { txt.submit(); } 教えていただいた内容を元に、↑のようなイメージで試行錯誤してみましたが、 自力では出来ませんでした。お手数ですが、ご指導のほどよろしくお願いいたします。 <input type=text name="word排除文字列" size=50 value=""> <input type=text name="comment排除文字列" size=50 value=""> <input type=text name="title排除文字列" size=50 value=""> ↑の三つの文字列をname.match("")で抜き出して処理をさせ、errorがなければ送信を続行させたいです。

fx2
質問者

補足

有難うございます。おかげさまでやりたい事ができました。あと実際に利用するフォームでは、name="word文字列"は一つのみですので、繰り返す必要がありません。この場合はどのようにすればいいのでしょうか。説明不足で申し訳ございません。お手数ですが、よろしくお願いいたします。

関連するQ&A

  • 半角英数字の判別

    お世話になります テキストフィールドにおいて半角英数字のチェックをしたいのですが・・・ 例えば『012ab』のような場合、 <script Language="JavaScript"> <!-- function checkText() { txt = document.myFORM.moto.value; if (txt.match(/[^a-z|^A-Z]/g)) alert("アルファベット以外が含まれてます"); } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkText()"> </form> では数字が入力されてるとalertされます function checkNum() { txt = document.myFORM.moto.value; for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { alert("数値以外が含まれてます"); return; } } } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkNum()"> </form> ではアルファベットがあるとalertされてしまいます この2つをどのように組み合わせれば半角英数字以外であればalertされるようになるのでしょうか?

  • java 計算フォームで未入力の場合ゼロとしたい

    java を使ってweb上で計算フォームを作成しています フォームに数値が入力された場合は問題なく計算結果に反映できますが、未入力のフォームがあると計算結果が反映されません。 未入力のフォームはゼロの値として計算結果を反映させたいのですが、どうしてもできなかったのでお力をお貸頂ければ助かります>< フォームに最初からゼロの値を入れておく方法もあるのですが、ゼロが消された場合は未入力となってしまい計算結果に反映されないので、あくまで未入力の場合はゼロとして計算結果に反映させたいと思っています。 [script LANGUAGE="JavaScript"] function calc() { var s1, s2, s3, s4, ss; s1 = eval(document.form01.txt01.value); s2 = eval(document.form01.txt02.value); s3 = eval(document.form01.txt03.value); ss = s1+s2 +s3; if(ss < 30000) document.form01.txt04.value = ss*0.3; else if(s5 >= 30000) document.form01.txt04.value = ss*0.5; } [/script] <form name="form01"> <input style= type="TEXT" name="txt01" /> <input style= type="TEXT" name="txt02" /> <input style= type="TEXT" name="txt03" /> <input onclick="calc()" type="button" value="計算する" /> <input style= type="TEXT" name="txt04" /> </form> よろしくお願いします

  • 文字列でなくて数値として処理をしたい。

    年度があって、2008 ボタンをクリックすると1を足して2009としたいのですが、文字列として扱われ20081となってしまいます。 数値として処理するにはどのように修正したらいいのでしょうか? ご存知の方教えてください。 <script type="text/javascript"> function test(parts){ var result = document.getElementById('result'); nendo = document.tForm.y.value; if(nendo == ""){ document.tForm.msg.value = "2008"; } else {document.tForm.msg.value = nendo + 1; } } </script> </HEAD> <BODY> </p> <form name="tForm"> <p> <INPUT TYPE="text" NAME="msg" SIZE=20 id="y"> <br> <input type="button" name="" value="足し算" onClick="test(this)">

  • javascriptでフォームの値の計算

    javascript1か月目の初心者です。 7つのテキストフィールドに数値を代入させて合計と平均(最後には標準偏差)を計算しようと思ってます。 以下のように考えましたが、うまくいきません。 strが文字列として?扱われてしまっているようです。 strをevalで囲んでみてもダメです。 詳しい方教えてください。 <!--スクリプト1--> <SCRIPT LANGUAGE="JavaScript"> <!-- function f_check() { if(document.F1.num1.value!=""&&document.F1.num2.value!=""&&document.F1.num3.value!=""&&document.F1.num4.value!=""&&document.F1.num5.value!="" &&document.F1.num6.value!=""&&document.F1.num7.value!=""){ str=0 for(var i = 0;i<document.F1.length;i++){ str+=document.F1[i].value; } alert('合計は'+str+"です"); avrg = (str)/document.F1.length; alert('平均は'+avrg+'です'); //ここから標準偏差の計算(略)。 } // --> </SCRIPT> <form method="post" name="F1" onSubmit="return f_check()"> 数値を入れてください<input type="text" name="num1" size="5"><br> 数値を入れてください<input type="text" name="num2" size="5"><br> 数値を入れてください<input type="text" name="num3" size="5"><br> 数値を入れてください<input type="text" name="num4" size="5"><br> 数値を入れてください<input type="text" name="num5" size="5"><br> 数値を入れてください<input type="text" name="num6" size="5"><br> 数値を入れてください<input type="text" name="num7" size="5"><br> <INPUT TYPE=SUBMIT VALUE="平均をとる"></FORM>

  • フォームで条件によってボタンの処理を変える

    フォームでパスワードを入力してもらい、確認用にもう一度入力した際、 誤入力があればアラート、正しく同じ値が入力されればsubmitにしたいと思っており、下記のようなコードを書きましたが、同じ値を入力した際にIEでエラーがでてしまいます(FirefoxやSafariでは動きます)。 当方Javascriptの知識に乏しく、どなたか助けていただけませんでしょうか?宜しくお願いいたします。 <html> <script language="JavaScript"> <!-- function passCheck(){ pass1 = document.free.PASSWORD.value; pass2 = document.free.PASSWORD2.value; if(pass1!==pass2) {alert("入力された確認用パスワードが違います");} else if(pass1==pass2) {document.free.submit.type="submit";} } //--> </script> <body> <form method="POST" action="submit.cgi" name="free"> <p> <input type="password" size="20" name="新パスワード" id="PASSWORD"><br> <input type="password" size="20" name="新パスワード(確認)" id="PASSWORD2"> </p> 確認のため、上記と同じパスワードをご記入ください。 <p><input type="button" name="submit" value="確認する" onclick="passCheck()"/></p> </form> </body> </html>

  • コントロール名の取得方法について

    いつもお世話になっております。 表題の件について早速ご質問なのですが、 例えば・・・ <form name="a"> <input type="text" name="txt01" value="no...1"> <input type="text" name="txt02" value="number2"> <input type="text" name="txt03" value="sono3"> <input type="text" name="txt04" value="その4"> <input type="text" name="txt05" value="これは5番目"> <input type="button" onClick="getControlValue(document.a)"> </form> というフォームがあったとして JavaScriptから <script type="text/JavaScript"> function getControlValue(oForm) { for (i=1;i<=5;i++) { oControlName = i番目のコントロール; // 数字の2桁0埋め処理を使用 alert(oControlName.Name + "の値は" + oControlName.value + "です。"); } return false; } </script> というループの中で上記フォーム(txt**)のコントロールを取得して、その値を取得するには どのような方法を取れば実現できるのでしょうか。 ご存知の方がいらっしゃいましたらお知恵をお借りできれば幸いに存じます。 よろしくおねがいいたします。

  • フォームに表示される文字をセンタリングさせたい。

    Javascriptの初心者です。宜しくお願いします。 テキストエリアが2つあったとします。 1のテキストエリアにある値を入力してボタンを押すと、 2のテキストエリアに1で入力した値をそのまま表示させ、 尚且つ表示された値をフォーム内でセンタリングさせたいのですが どうすればよいのかわかりません・・・。 ご存知の方がいらっしゃいましたら教えて下さい。 どうぞ宜しくお願い致します。 <html> <head> <script language="JavaScript"> <!-- function my1() { a=document.form1.text1.value; document.form1.text2.value=a; } //--> </script> </head> <body> <form name="form1"> <input type="texterea" name="text1"> <input type="texterea" name="text2"> <input type="button" value="CLICK!" onClick="my1()"> </form> </body> </html>

  • フォームの動作についてお願いします!

    <FORM NAME="form1"> <INPUT NAME="text1" TYPE="text"> <INPUT TYPE="button" value="表示" onclick="daialog()"> </FORM> <script language="JavaScript"> <!-- function daialog(){  alert(form1.text1.value) ; } --> </script> ----------------------------------- と上のようにテキストボックスの中身をアラートで返すスクリプトが あるのですが、検索ページ(google等)のようにボタンを押さずとも、 エンターキーを押せばdaialog()が呼びだされるようにするには どうすればいいでしょうか。。。 <FORM>に関係がありそうなのでJavaScriptのカテゴリにじゃないかも しれませんが、どなたかよろしくお願いします!!

  • テキスト入力フォームをクリックしなくてもアクティブに

    テキスト入力フォームをクリックしなくてもアクティブにするjavascriptを教えてください。 下のスクリプトの間違っている箇所がわかりません。 フォームタグの閉じる位置でしょうか。 <form name=frm> <input TYPE=TEXT SIZE=20> <input TYPE=Button VALUE="検索" onClick='alert("仮")'> </form> <script language=javascript> //<!-- document.frm.passch.focus(); //--> </script>

  • textareaに文字列を追加する方法

    JavaScript超初心者です。初めて質問します。 2つのテキストエリアに入力されたものを、3つ目のテキストエリアに文字を追加して、入力するスクリプトを作ろうとしています。 ネットで似たようなものを見つけてきて、アレンジしてみたのですが、2つ目の文字を入力するためのボタンをクリックすると、1つ目の文字が消えてしまいます。 姓:AAA/名:BBB と続けて追加されるようにするには、どうしたらよいのでしょうか? どなたかお助けください。よろしくお願いいたします。 <作成中のページ> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META http-equiv="Content-Style-Type" content="text/css"> <title></title> <script language="JavaScript"><!-- function setData() { txt1= document.form7.t1.value; document.form7.list.value = "姓:"+ txt1; } function setData1() { txt2= document.form7.t2.value; document.form7.list.value = "名:"+ txt2; } // --></script> </head> <body> <form name="form7"> 姓<TEXTAREA name="t1" size="10" rows="1"></TEXTAREA><input type="button" value="済" onClick=setData()><br> 名<TEXTAREA name="t2" size="10" rows="1"></TEXTAREA><input type="button" value="済" onClick=setData1()><br> <textarea rows="9" cols="20" name="list"></textarea><br> </form> </body> </html>

専門家に質問してみよう