JavaScriptでセレクトの入力チェックを行う方法

このQ&Aのポイント
  • ショッピングカートの商品注文ページでセレクトメニューの「選択してください」の部分をJavaScriptによるエラーチェックしたい。
  • 現在使用しているショッピングカートCGIに応用したいが、日本語指定で正常に作動しない問題がある。
  • CGI側の仕様変更や改造は不可のため、日本語指定できる解決策を教えてほしい。
回答を見る
  • ベストアンサー

java scriptでセレクトの入力チェックの応用

ショッピングカートの商品注文ページでセレクトメニューの「選択してください」の部分でをJavascriptによるエラーチェックしたいのですが、過去の掲示板を見たら応用できるコードを見つけましたが、現在当方が使用しているショッピングカートCGI(WEB寺小屋)に応用したいと思っています。 JS部分のif(f.o.selectedIndex == 0)の「o」の部分を「o-カラー」で指定すると(日本語)スクリプトが正常に作動しないのですが、どうしてもCGI側での仕様は変更したくないし、改造もできないので、この部分を日本語指定できる解決策をご存知でしたら教えてください。 ↓問題なく動作確認 ------------------------------------------------------ 【JS部分】 function kakunin(f) {  if(f.o.selectedIndex == 0)  {   alert("カラーを選択してください");   return;  } } 【HTML部分】 <form name="test"> <SELECT NAME="o"> <option selected>カラーを選択</option> <OPTION>赤色 <OPTION>青色 <option>黄色</option> </SELECT> <INPUT TYPE="button" VALUE="OK" onClick="kakunin(test)"> </form> -------------------------------------------------------------- ↓問題の部分認 ------------------------------------------------------ 【JS部分】 function kakunin(f) {  if(f.o-カラー.selectedIndex == 0)  {   alert("カラーを選択してください");   return;  } } 【HTML部分】 <form name="test" method="post" action="test.cgi"> <select name="o-カラー"> <option value="" selected>選択</option> <option value="レッド_0">レッド</option> <option value="ブルー_0">ブルー</option> <option value="イエロー_0">イエロー</option> </select> <input type="submit" value="カートに入れる" onClick="kakunin(test)"> <input type="hidden" name="mode" value="regist"> --------------------------------------------------------------

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

  • ベストアンサー
  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.1

function kakunin(f) { if(f.elements[0].selectedIndex == 0)//変更 //elements[0]はフォームの中の0番目の項目である事を指します。 //他にも項目がある場合は合わせて数値を変更してください。 { alert("カラーを選択してください"); return false;//変更 falseを返してエラーの場合は送信中止 } return true;//追加 エラーがなければ続行 } 他に、 <input type="submit">のonClickは削除し、 <from>にonsubmitを追加します。(エラーの場合に送信を中止させる為) <form ~ onsubmit="return kakunin(test)">

mera1005
質問者

お礼

非情に解りやすい回答ありがとうございました。JAVAによるエラー表示チェック方法は解決しました。Javaもいろいろと奥が深いです。 なお、解決しましたが、一点補足説明で質問させていただきましたが、お解かりになれば、お時間があるときで結構ですのでご回答をお願いいたします。

mera1005
質問者

補足

丁寧な回答ありがとうございます。エラー表示についてはパーフェクト解決しました。 補足でもう一点解決できないことがあります。 カート部分のソースを全て下記に示しますが、カートチェックした場合に、エラー表示の「カラーを選択して下さい。」のOKクリック後にカートに追加されてしまします。上記のOnclick部分も削除して<form ~ onsubmit="return kakunin(test)">を追加しましたが、解決不能です。 申し訳ございませんが、わかれば教えていただけないでしょうか? よろしくお願いします。 --------------------------------------------------------------- 変更したJS部分 function kakunin(f) {  if(f.elements[0].selectedIndex == 0)//変更 //elements[0]はフォームの中の0番目の項目である事を指します。 //他にも項目がある場合は合わせて数値を変更してください。  {   alert("カラーを選択してください");   return;  } } ---------------------------------------------------------------- 変更したHTML部分 <form name="test" method="post" action="test.cgi" onsubmit="return kakunin(test)"><!--Form Start--> <select name="o-カラー"> <option value="" selected>選択</option> <option value="レッド_0">レッド</option> <option value="ブルー_0">ブルー</option> <option value="イエロー_0">イエロー</option> </select> <!--A表示:数量選択枠がない場合?個限定:複数はValue値変更--> <input type="hidden" name="amount-個" value="1"> <!--A表示:カートに入れるボタン--> <input type="submit" value="カートに入れる"> <!--A非表示:商品番号↓--> <input type="hidden" name="id" value="X-1001"> <!--A非表示:商品名↓--> <input type="hidden" name="goods" value="商品名"> <!--A非表示:価格↓--> <input type="hidden" name="unit" value="1500"> <!--A非表示:画像↓--> <input type="hidden" name="gazou" value="a_t.gif"> <!--A非表示:商品説明↓--> <input type="hidden" name="setumei" value="商品説明"> <!--A非表示:固定タグで必ず入れる--> <input type="hidden" name="mode" value="regist"> </form><!--Form Finish-->

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

#1です。 前回の回答の alert の次のreturnも変更、 及びその下にもreturnが追加されています。

mera1005
質問者

お礼

誠にありがとうございました。 基本的なミスでした。Java scriptの基本が理解していなかったので、もう少し勉強します。いろいろとお手間をおかけしました。また、何かありましたらお願いいたします。 最後に一言:心から本当に感謝してます。これでできなかったストレスから開放されます。ありがとうございました。

関連するQ&A

  • JAVAスクリプトでのFORM入力チェックの方法

    JAVAスクリプトでのFORM入力チェックの方法を教えてください。 ネットでいろいろ探してはめ込んだのですが、動作するプログラムが下記のしかありませんでした。 ラジオボタンの入力チェックとプルダウンの入力チェックを同時にしたいのですがよくわかりません。 今の状態ではラジオボタンをチェックしても未入力のアラートが出てしまいます。 あとこれにプルダウンの入力チェックをつけたいのですが… すいませんがどなたか教えてください。よろしくお願いします。 function Form_Validator(theForm) { var flag=false; var i; for(i=0; i<theForm.OPT-00-06.length; i++){ if (theForm.OPT-00-06[i].checked){ flag = true; break; } } if(!flag){ alert("\"OPT-00-06\" にチェックしてください。"); return (false); } if(confirm("入力もれはありません。")){ return (true); }else{ return (false); } <form name="form1" method="POST" action="~cgi?" onsubmit="return Form_Validator(this);"> ・ ・ <input type="radio" name="OPT-00-06" value="A"> <input type="radio" name="OPT-00-06" value="B"> ・ ・ <select name="OPT-00-07"> <option value="">選択してください</option> <option value="80">80</option> <option value="81">81</option> ・ ・ ・ <select name="OPT-00-08"> <option value="">選択してください</option> <option value="35">35cm</option> <option value="36">36cm</option> ・ ・ ・ <input type="submit" value="カートに入れる" name="submit">   <input type="reset" value="内容をクリア" name="reset"> </div> </form>

  • 読み込む外部スクリプトをセレクトボックスを使って選べないでしょうか?

    お世話になります。 フォーム内に配置した、1から5までの数字を選べるセレクトボックスを使って、そのフォーム内に読み込む.jsファイルを選択することは出来ないでしょうか? 外部ファイルには、UsualSet.js、EmergencySet.js、PauseSet.jsなどがあって、そのスクリプトファイルの中身は document.write("<input name=\"youbi\" type=\"hidden\" value=\"土曜\"><input name=\"codenumber\" type=\"hidden\" value=\"732\"><input name=\"busho\" type=\"hidden\" value=\"経理\">"); とかいった感じになっています。 つまり、セレクトボックスで何番を選ぶかによって、CGIに渡す値を$youbiと$codenumberと$bushoとの3つ全ていっぺんに変更出来るようにしたい訳です。 しかし、そのセレクトボックスにどういう仕掛けをしたら良いかわからなくて困っています。 まさか、 <FORM ACTION="pro.cgi" METHOD="POST">  <select name="kazu">   <option value="<script language="javascript" src="UsualSet.js>" selected>1</option>   <option value="<script language="javascript" src="EmergencySet.js>" >2</option>   <option value="<script language="javascript" src="PauseSet.js>" >3</option>   <option value="<script language="javascript" src="MorningSet.js>" >4</option>   <option value="<script language="javascript" src="FulleSet.js>" >5</option>  </select>   <input type="hidden" name="kaijou" value="22890">  <input type="hidden" name="boxnumber" value="62">  <input type="submit" name="Submit" value="送信"> </FORM> なんてわけに行かないですもんね。 どうしたらいいかおわかりの方がいらっしゃいましたら、どうかよろしくお願い致します。

  • scriptによる読み込みのselect表示

    <script language="javascript" type="text/javascript" src=""></script> で外部ファイルからHTMLを読み込ませ表示させたいのですがなぜかselectが上手く表示されません。 上手く説明できませんが <script language="javascript" type="text/javascript" src="http://www.○○.com/××.php"></script> を貼り付けた部分に http://www.○○.com/に用意した××.phpから <form action="" method="post"> <input type="radio" name="test1" value="1" />r1 <input type="radio" name="test1" value="2" />r2 <input type="checxbox" name="test2" value="1" />c1 <input type="ceckbox" name="test2" value="2" />c2 <select name="test3"> <option value="1">s1</option> <option value="2">s2</option> </select> </form> このようなHTMLを吐き出して表示させたいのですが、redioやchekboxは問題ないのにselectが上手く表示されません。 全くプルダウンが出来ずoption部分を見る事が出来ない状態です。 上記のような方法で表示させる事は無理なのでしょうか? それとも何か対応策はあるのでしょうか? どなたかお教え願えませんでしょうか。

  • JavaScriptで、SELECTの値で、TEXTを入力可と入力不可

    JavaScriptで、SELECTの値で、TEXTを入力可と入力不可に分けたい。 現在、以下のフォームを作成しています。 <form method="post" action="/" name="formname"> <select name="test[0]" size="1" onchange="selectChange(0)"> <option value="A" selected>A</option> <option value="B" >B</option> <option value="C" >C</option> <option value="D" >D</option> </select> <select name="test[1]" size="1" onchange="selectChange(1)"> <option value="A" selected>A</option> <option value="B" >B</option> <option value="C" >C</option> <option value="D" >D</option> </select> <br> <input name="txt[0]" type="text" value="" size="10"> <br> <input name="txt[1]" type="text" value="" size="10"> </form> このフォームで、例えば、selectのtest[0]でvalueの「C」が選択された場合、 txt[0]が入力できないようにしたいと考えています。 また同様に、test[1]でvalueの「C」が選択された場合は、txt[1]が入力出来ないように したいです。 以下のようなJavaScriptを書きましたが、上手く動きません。 function selectChange(value) { var answer = document.formname.elements["test[value]"].selectedIndex; if(answer == "C") { document.formname.elemens["txt[value]"].disabled = false; } else { document.formname.elemens["txt[value]"].disabled = true; } } どなたか教授頂けましたら、幸いです。 よろしくお願いします。

  • <SELECT>タグでの selectを→間違い

    <SELECT>タグでの selectを初めに表示させたいのですが、 できますでしょうか。 先の質問、文を間違えました、すいません。 訂正します。 cが選択状態で、何も表示されず、 以下のbを選べば、2が表示されますが、 何も選んでいないとき、cを選択した状態で、 3を表示させておきたいのですが 可能でしょうか。 onloadで、読みだす方法とかで可能なのでしょうか。 よろしくおねがいいたします。 <p> <form name="test"> <select name="linkselect" onChange="n()"> <option value="">選択して下さい</option> <option value="1">a</option> <option value="2">b</option> <option value="3"selected>c</option> </select> </form> </p>

  • 入力チェック

    下記の入力チェックのときに「【選択して下さい】」という文字列なら「だめ」と表示したいのですが、項目が多いのでヘッダー部分でdocument.kansou.yubin.valueのようのようにテキストボックスの名称を1個ずつ指定せずに一括でできないでしょうか。イメージとしてはdocument.kansou.form(i).valueみたいな?感じのまとめ処理がしたいのですが。 現在→yubinが「【選択して下さい】」ならダメ jusho1が「【選択して下さい】」ならダメ ・・・・ やりたいこと→どれかのテキストボックスが「【選択して下さい】なら「だめ」 <HTML> <HEAD> <TITLE>入力チェック</TITLE> <SCRIPT LANGUAGE="JavaScript"> <!-- function submitCheck(){ if (document.kansou.yubin.value=="【選択して下さい】"){ alert("だめ"); return false; } else return true; } //--> </SCRIPT> </HEAD> <BODY> <FORM NAME="kansou" ACTION="test.cgi" METHOD="post" ENCTYPE="text/plain" onSubmit="return submitCheck()"> <SELECT NAME="yubin">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <SELECT NAME="jusho">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <SELECT NAME="jusho2">【選択して下さい】 <OPTION SELECTED>ほげほげ</OPTION></SELECT> <INPUT TYPE="submit" VALUE="送 信" onClick="document.kansou.name.value=''"> </CENTER> </FORM> </BODY> </HTML>

  • セレクトメニューでジャンプしたページを新しいWindowで表示したい

    リンク先をセレクトメニューで選んでもらって、そのページ内に開く方法は色々なJavaScriptを紹介しているページで見せていただいたのですが、同じWindowではなく、新しいWindowを開いてそこに表示したいのです。 下記は同じWindow内に開いてしまいますが、現在はこのようなカンジで使用しています。 <form> <select onChange="location=this.options[this.selectedIndex].value"> <option value="">選択して下さい <option value="test1.html">TEST-1 <option value="test2.html">TEST-2 <option value="test3.html">TEST-3 </select> </form> 宜しくお願いしますm(_ _)m

  • Javascriptでセレクトメニューの選択チェックの方法

    Javascriptでセレクトメニューのフォームをチェックしたいのですが、 リストメニューの「選択して下さい」を選んだままだと、「番号を選択して下さい。」とエラーを出したいのですが、下記の様に書いてみたのですが、うまく動きません…どのように書けばいいか教えて下さい。宜しくお願いします。 <script language=\"JavaScript\"> <!-- function Check() { var str = document.form.a.value; if(document.form.a.value == "0") { alert("番号を選択して下さい"); } //--> </script> <form id="form" name="form" method="post" action="##"> <select name="a" onblur="Check();"> <option value="0">選択して下さい</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> </select> <input type="submit" name="Submit" value="登録" onClick="Check();"> </form>

  • フォームのドロップダウンで未選択のチェックをしたいのですが、下記のよう

    フォームのドロップダウンで未選択のチェックをしたいのですが、下記のようにしたのですがうまくいきません。・・・原因は id[1] だと思うのですが、こういう場合JavaScriptには、どのように記述すればよいのでしょうか? ※ドロップダウンの name="id[1]" は、変更できません。 よろしくお願いします。 <script language="JavaScript"> <!-- function check(){ if(document.cart_quantity.id[1].selectedIndex == 0){ alert('選択してください'); return false; } return true; } //--> </script> <form name="cart_quantity" method="post" action="" onSubmit="return check()"> <select gtbfieldid="272" name="id[1]" id="attrib-1"> <option value="1" selected="selected">選択してください</option> <option value="2">いちご</option> <option value="3">みかん</option> <option value="4">りんご</option> </select> <input type="submit" value="送信" name="submit"> </form>

  • selectのnameが配列の場合

    説明がわかりにくいかもしれませんがよろしくお願いいたします。   セレクトボックスが選択されると、テキストフィールドが変わるというJavaScriptを作成しています。 nameに配列を使った場合、elementsを使用すればいいと言うことまでは分かり1つだけの場合は成功しました。 しかし、同じname(配列)のセレクトボックスとテキストフィールドが複数ある場合は成功しません。 PHPでデータベースに格納する際に、どうしてもセレクトボックスとテキストフィールドは配列にして置かないといけないのですが、この場合どうすれば、成功するでしょうか? 現在以下のようにソースを書いて失敗しています。 ご教授の程よろしくお願いいたします。 ↓↓JavaScript部分 <script> function selectChange(){ var no = document.test1.elements['member[]'].selectedIndex; if(no==1){ document.test1.elements['point[]'].value =0; } else{ document.test1.elements['point[]'].value =""; } } </script> ↓↓HTML部分 <form name='test1'> <select name='member[]' onChange='selectChange()'> <option value='aaa'>aaa</option> <option value='bbb'>bbb</option> <option value='ccc'>ccc</option> </select> <input name='point[]' type='text'> <br> <select name='member[]' onChange='selectChange()'> <option value='aaa'>aaa</option> <option value='bbb'>bbb</option> <option value='ccc'>ccc</option> </select> <input name='point[]' type='text'> </form> //bbbの場合だけ、テキストフィールドのデフォルト値を0にしたい

専門家に質問してみよう