• ベストアンサー

入力文字数のチェック

CGIを利用して、入力されたコードからある項目を検索させるページを作っています。 入力させる文字は数字8桁に制限したいのですが、下記の内容ですと、8桁以下の入力でエラーを出すことはできますがそのままCGIの処理に流れていってしまうのです。 これを、8桁以下だったらエラーを出してそこでストップさせるようにしたいのです。 かれこれ3日悩んでいます。。。よろしくお願いいたします。 ========================================================= <HTML> <HEAD> <TITLE>データベース</TITLE> <script language="javascript" type="text/javascript"> <!-- var MAXLENGTH = 8; //入力許容最小文字数 function tareachk(frm){ var tmp = frm.HANDLE.value; var len = tmp.length; if(len < MAXLENGTH){alert("現在のコードの"+MAXLENGTH+"桁を入力してください");} else {frm.submit();} } // --> </script> </HEAD> <BODY bgcolor="#ffffff"> <img SRC="logon_l2.gif" height=42 width=685> <br> <form method=post action="/cgi-bin/search.cgi"> コード <input type=text name="HANDLE" size="10"> <input type=submit value="検索" onClick="tareachk(this.form);"> </form> </BODY> </HTML>

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

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

こんなんでどうでしょう? (1)「検索」ボタンの「onClick=~」をなくして、formに「onSubmit=~」を記述。 (2)エラーの場合、falseを返してsubmitを無効化する <HTML> <HEAD> <TITLE>データベース</TITLE> <script language="javascript" type="text/javascript"> <!-- var MAXLENGTH = 8; //入力許容最小文字数 function tareachk(frm){ var tmp = frm.HANDLE.value; var len = tmp.length; if(len < MAXLENGTH){alert("現在のコードの"+MAXLENGTH+"桁を入力してください"); return false; }else{ return true; } } // --> </script> </HEAD> <BODY bgcolor="#ffffff"> <img SRC="logon_l2.gif" height=42 width=685> <br> <form method=post action="/cgi-bin/search.cgi" onSubmit="return tareachk(this);"> コード <input type=text name="HANDLE" size="10"> <input type=submit value="検索"> </form> </BODY> </HTML>

shinashina
質問者

お礼

お返事が遅くなりまして申し訳ありません。 できました!!! 完璧です。。。 本当に助かりました、ありがとうございます。

その他の回答 (1)

  • stanaka
  • ベストアンサー率44% (13/29)
回答No.1

<input type="submit"  のところを, <input type="button"  に変えてみたらどうだろうか.しかしこれだと,フォームの決定・送信にリターンキーが使えなくなる.いちいちボタンをクリックせにゃならん.  その辺はデフォルト動作とかを指定できるのかな?.

shinashina
質問者

お礼

お返事が遅くなりまして申し訳ありません。 おっしゃるとおり、リターンキーで続行されてしまうもので。。。 ということで、上の方の例を参考にさせていただきました。 ありがとうございました!

関連するQ&A

  • テキストエリア文字制限について

    テキストエリア文字制限について 失礼します。 javascript初心者です。 複数のテキストエリアの文字制限を行いたく 苦戦しております。 いろいろと検索してみましたが・・・ 2日ほど悩んでおります。 AとBでエラーが出た場合はCGIに流れず入力フォームに戻るのですが Bでエラーが発生しない場合CGIに流れてしまいます。 ですの文字数制限をしても結局CGIに流れてしまうのですが どのように記述すればよろしいでしょうか?? なんとか・・・ご教授いただければ幸いです。 よろしくお願いいたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Style-Type" content="text/css"> <meta http-equiv="Content-Script-Type" content="text/javascript"> <title>入力文字数の制限</title> <script language="javascript" type="text/javascript"> <!-- var MAXLENGTH = 10; //入力許容最大文字数 function tareachk(frm){ var tmp = frm.vin1.value; var len = tmp.length; if(len > MAXLENGTH){alert("A入力可能な文字数は"+MAXLENGTH+"文字までです");} var tmp = frm.vin2.value; var len = tmp.length; if(len > MAXLENGTH){alert("B入力可能な文字数は"+MAXLENGTH+"文字までです");} else{frm.submit();} } // --> </script> </head> <body> <form action="ccccc.cgi" method="post"> <textarea name="vin1" rows="5" cols="30">10文字まで入力可能</textarea><br> <textarea name="vin2" rows="5" cols="30">10文字まで入力可能</textarea><br> <input type="button" value="GO" onclick="tareachk(this.form);"> </form> </body> </html>

  • javascript form送信後の動作

    以下のスクリプトでiframeにデータは送信できているんですが、<input type="text">に入力したテキストが残ってしまいます。どのように記述したらうまくいくでしょうか? <script type="text/javascript"> function send(){ var frm=document.txt_submit; frm.submit(); frm.reset(); } </script> <form name="txt_submit" action="log.cgi" method="post" target="log" autocomplete="off"> <input type="text" name="ctxt" size="20" value=""> <input type="button" value="送信" onclick="return send();"> </form>

  • java script フォームのチェックボックス入力制限について

    java script フォームのチェックボックス入力制限について どなたかお教えください。 以下のコードを書き換えて、現状では1つのチェックボックスを複数にし(かつ、複数選択可にし)、チェックボックスをチェックした場合のみ「選択肢」ラジオボタンがアクティブになる仕様にしたいと考えております。 サイト上で見つけたサンプルコードをいじっているのですが、何分素人なのでうまく行きません。どなたか助けていただけると助かります。 よろしくお願いします。 <script type="text/javascript"> function fchk3(obj){ var frm=obj.form; var len=frm.elements.length; if(obj.checked==true){ for(var i=0; i<len; i++){ if(frm.elements[i].type=="radio"){ frm.elements[i].disabled=false; } } }else{ for(var i=0; i<len; i++){ if(frm.elements[i].type=="radio"){ frm.elements[i].checked=false; frm.elements[i].disabled=true; } } } } </script> <form name="form3" action="#"> <label for="chk3"><input type="checkbox" id="chk3" name="chk3" onclick="fchk3(this)" checked="checked" />このボタンのチェックを外すとラジオボタンが無効化</label><br /> <label for="chk3_r1"><input type="radio" id="chk3_r1" name="r1" />選択肢</label> </form>

  • 入力に関して。

    以下のソースのようにテキストボックスを4つくらい並べて、最大入力文字数になったら、自動的に右のテキストボックスに入力できるようにすることはできるのでしょうか? <html> <head> <title></title> </head> <body> <form name="form1"> <input type="text" name="txt1" size="7" maxlength="3">. <input type="text" name="txt2" size="7" maxlength="3">. <input type="text" name="txt3" size="7" maxlength="3">. <input type="text" name="txt4" size="7" maxlength="3"> </form> </body> </html>

  • formタグ

    HTMLで、formを使用し、CGIへテキストエリアのデータをpostしたいと 考えております。 テキストエリアを3つ、ボタンを1つ設けるならば 通常以下のようにすると思います。(必要部分の抜粋) <form action="foo1.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行"> </form> こうすると、実行ボタンをクリックすると、text1、text2、text3のテキストエリアに 記述されているテキストが送信されますが、ここにボタンをもう一つ設け、 上記3つのデータを別のCGIに送信したいのですが、 この場合どのようにHTMLを記述したらよいでしょうか? 新たに下記のようにformタグを設けると、テキストエリアは6つになってしまいますし。。。 <form action="foo2.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行2"> </form> どなたか分かる方情報頂けますか。

    • ベストアンサー
    • HTML
  • 異なるname属性のテキストの入力チェックについて

    異なるname属性のテキストの入力チェックについて よろしくお願いします。 それぞれname属性の異なるテキスト群があるのですが、 どれかひとつに数字を入力しないと、アラートが出るようにしたいと思っています。 <form action="mail.cgi" method="post" onSubmit="return check(this);"> <input type="text" name="maru" /> <input type="text" name="sankaku" /> <input type="text" name="shikaku" /> </form> この場合のコードの記述方法をお教え頂ければ幸いです。 どうぞよろしくお願い致します。

  • checkbox の入力チェックのやり方について

    お世話になります。 フォームにて、 javascriptで、入力チェックをおこないたいと思っています。 チェックボックスについては、どれか選択が一つでもなければ、アラートで、文字を出したいと思いますが、うまくできません。 チェックボックスの入力確認の方法を教えてください。 よろしくお願いいたします。 現在作りかけのソースは、下記の通りです。 <html> <head><title>-</title></head> <body> <form method="post" action="" onsubmit="return form_Validator(this)"> <input type="text" name="a1" size="15" maxlength="12"> <BR> <input type="checkbox" name="a1001" value="1"> <input type="checkbox" name="a1002" value="1"> <input type="submit" value="登録" name="submit"> </form> <script Language="JavaScript"> <!-- function form_Validator(doc) { if ( doc.a1.value == "" ) { alert( "BAD" ); return false; } /* a1001かa1002のチェックボックスのチェックがなければアラート----*/ return (true); } //--> </script> </body> </html>

  • 指定のinputに入力

    恐れいります。 <form action="./xxx.cgi" method="POST"> <input type="text" name="name1"> <input type="text" name="name2"> <input type="text" name="name3"> <input type="text" name="name4"> <input type="text" name="name5"> <input type="submit" value="送信"> </form> と、5つの入力欄があり、別ウィンドウから、指定の場所に代入することは可能でしょうか。例えば、name1のエリアに、別ウィンドウからformで「test」という文字を送信して入力する感じです。 よろしくお願いします。

  • 複数フォームに同じnameがある場合の入力チェック

    うまく入力チェックが動作せず、行き詰まっており困っております。 アドバイスを頂ければ助かります。ソースは以下です。 function chkform(frm){ var mst=Array("dep","plan"); var mst_nm = Array("出発地","プラン"); var len=mst.length; for(i=0; i<len; i++){ var obj=frm.elements[mst[i]]; if(obj.type=="text" || obj.type=="textarea"){ if(obj.value==""){ alert(mst_nm[i]+"は必須入力項目です"); frm.elements[mst[i]].focus(); return false; } }else{ for(var j=0, chk=0; j<obj.length; j++){ if(obj[j].checked) chk++; } if(chk==0){ alert(mst_nm[i]+"は必須入力項目です"); return false; } } } return true; } <form name="order1" onsubmit="return chkform(this)"> <input type="radio" name="dep" value="osa" />大阪   <input type="radio" name="dep" value="tky">東京 <br /> <select name="plan"> <option value="">▼プランを選択▼</option> <option value="biz">出張</option> <option value="tvl">旅行</option> <option value="day">日帰り</option> </select> <br /> <input type="submit" name="btn1" value="確認"> </form> <form name="order2" onsubmit="return chkform(this)"> <input type="radio" name="dep" value="osa" />大阪   <input type="radio" name="dep" value="tky">東京 <br /> <select name="plan"> <option value="">▼プランを選択▼</option> <option value="biz">出張</option> <option value="tvl">旅行</option> <option value="day">日帰り</option> </select> <br /> <input type="submit" name="btn2" value="確認"> </form>

  • 指定したタグを書き換えるには?

    document.all.tags("input")(1). を使って <form> <input> <input type="submit"> <input> <略> </form> の二番目のタグ<input type="submit">を書き換えるとします。 これを<input type="text" maxlength="200">に書き換えたり <input type="submit">を<textarea ごにょごにょ></textarea> に書き換えたりする方法はありませんでしょうか。 よろしくお願いします。

専門家に質問してみよう