対象データの取得方法についての質問

このQ&Aのポイント
  • formで送信する入力データのチェックをしたいです。データは配列になります。
  • 現在のコードでは、配列の要素が正しくチェックされず、問題が発生しています。
  • 配列以外のデータでは問題がないため、正しい記述方法を教えていただきたいです。
回答を見る
  • ベストアンサー

対象データの取得方法

formで送信する入力データのチェックをしたいです。 データは配列になります。(phpで作成) phpの宣言は省略します。 ◆送信側 <form method="post" action="xxxxx.php" target="_top" name="test_form"> for(i=0;i<=10;i++){ <input type="text" name="inputno[<?=$i?>]" value="<?=$inputno[$i]?>"> } <input type="submit" value="送信" onclick="return(inputck());"> </form> ◆js処理 function inputck(){ for(i=0;i<10;i++){ if(document.test_form.inputno[i].value.match(/[^0-9]/g)){ alert("整数値を入力してください"); return(false); } } } という感じなのですが、jsのif文(inputno[i]?)がおかしいみたいでうまくいきません。 配列でなければ大丈夫なので…。 記述方法を教えてくださいm(__)m

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

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

javascriptとPHPを混同している部分が見受けられます。 あとjavascriptの場合はオブジェクト渡しをした方が わかりやすくなりますね 以下処理です。 <script> function inputck(f){ for(i=0;i<3;i++){ if(f.elements["inputno["+i+"]"].value.match(/[^0-9]/g)){ alert("整数値を入力してください"); return false ; } } return true; } </script> <form> <input type="text" name="inputno[0]" value=""> <input type="text" name="inputno[1]" value=""> <input type="text" name="inputno[2]" value=""> <input type="submit" value="送信" onclick="return inputck(this.form);"> </form> ただし、行数をいちいち把握するのもなんなんで、 formのデータをぐるっと回したほうが汎用的かもしれません。 <script> function inputck(f){ for(i=0;i<f.length;i++){ if(f[i].name.match(/^inputno\[[0-9]+\]$/) && f[i].value.match(/[^0-9]/g)){ alert("整数値を入力してください"); return false ; } } return true; } </script> <form> <input type="text" name="inputno[0]" value=""> <input type="text" name="inputno[1]" value=""> <input type="text" name="inputno[2]" value=""> <input type="submit" value="送信" onclick="return inputck(this.form);"> </form>

qkyorochan
質問者

お礼

できました! ありがとうございますm(__)m

関連するQ&A

  • POSTデータのNAME属性をVALUEによって取得する方法

    HTML→PHPのPOSTデータのやりとりについて、 【HTML】 <form name="form1" method="post" action="xxx.php"> <input name="01" type="text" value="1"> <input name="02" type="text" value="0"> <input name="03" type="text" value="0"> <input name="04" type="text" value="1"> <input type="submit" name="Submit" value="送信"> </form> 【xxx.php】 フォームから送信されたデータを使って、「value」が"1"の「name」を拾うのにはどのように書けばいいでしょう? ↓このように取得したいです。 $data[0]="01"; $data[1]="04"; よろしくお願いします。

    • ベストアンサー
    • PHP
  • javascript 要素取得

    htmlでチェックボックスを作り、その値をjavascriptで取得したいと思い、 下記のようなプログラムを書きました。 セレクトボックスから複数選択できるようにしたいのですが、 表示されるのは複数選んだ際に一番初めに選択したものだけです。  例) 「あああ」と「いいい」を選ぶと「あああ」のみ表示される。 しかし、これを「あああ.いいい」としたいのです。 できれば、 「あああ  いいい」 と改行できるといいです。 formの中にたくさんの項目があるため、 forのところがうまくいっていないのでしょうか? どなたかよろしくお願いします。 javascript側 function checkbox(){  var str="";  for(i=0;i<document.form1.elements.length;i++){   if(document.form1.elements[i].checked){     if(str != "") str = str + ".";     str = str + document.form1.document[i].value;   }  }  if(str == ""){   alert("入力してください");   return false;  }else{   document.form1.submit();  } } HTML側 <form action="<%=遷移先ページ%>" method="post" name="form1"> <select 複数> <input 複数> <input type="checkbox" name="document" value="・あああ"/>あああ <input type="checkbox" name="document" value="・いいい"/>いいい <input type="checkbox" name="document" value="・ううう"/>ううう <input type="submit" value="Submit" onclick="return checkbox();">

  • 送信した配列の取得方法

    formで送信した配列データを受け取りたいのですが、以下のような記述だとうまく受け取れません。 記述方法を教えてくださいm(__)m (取得データはほかにもいくつかあり、まとめてPOSTで受け取っています) ◆取得側 function cnv_formstr($array1) { foreach($array1 as $k => $v){ if (get_magic_quotes_gpc()) { $v = stripslashes($v); } $v = htmlspecialchars($v,ENT_QUOTES); $array1[$k]=$v; } return $array1; } $prmarray_post = cnv_formstr($_POST); $data_cnt = isset($prmarray_post["data_cnt"]) ? $prmarray_post["data_cnt"] : ""; for ($i = 0; $i < $data_cnt; $i++) { $test_data[$i] = isset($prmarray_post["test_data[".$i."]"]) ? $prmarray_post["test_data[".$i."]"] : ""; } ◆送信側(html部分のphp宣言解除記述は省きます) <input type="hidden" name="data_cnt" value="<?=$data_cnt?>"> for ($i = 0 ; $i <= $data_cnt; $i++) { <input type="hidden" name="test_data[<?=$i?>]" value="<?=$test_data[$i]?>"> } という感じでやりたいです。 わかりにくかったらすみません(-_-; よろしくお願いします。

    • ベストアンサー
    • PHP
  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • PHPのページ間による配列の受け渡しについて

    A.php ---------------------------------------------------- for($i=0;$i<5;$i++){ $hairetu[$i]=$i; $h_name[$i]=$i; } print "<form action='./B.php' method='POST'> for($i=0;$i<5;$i++){ print "<input type='text' name='".$h_name[$i]."' value='".$hairetu[$i]."'>"; } print "<input type='submit' value='Bへ送信'>"; print "</form>"; ------------------------------------------------------------ 拙い流れですが、このようにAからBへと送信します。 Bはいったい、どのようにしてAから送信されてきた配列を受け取れることができるのでしょうか? JavaScriptは使わず、PHPのみで作成したいと思いますので、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 外部.jsの内容を一部置き換えて読み込む方法

    お世話になります。 index.htmlに AAA.js という外部.jsを読み込ませてフォーム送信させようとしています。 AAA.jsには document.write("<INPUT NAME=\"return_url\" TYPE=\"hidden\" VALUE=\"http://www.my-site.com/p-123.html\"><INPUT NAME=\"to_do\" TYPE=\"hidden\" VALUE=\"touroku\"><input type=\"submit\" name=\"comm1\"/>" value=\"書き込む\""); というソースが入っており、 index.htmlには <INPUT NAME="return_url" TYPE="hidden" VALUE="http://www.my-site.com/p-456.html"> というタグが含まれています。 この場合、1組の<form></form>内に、同じ「return_url」で、片や p-123.html、片や p-456.html と、矛盾する2つの指定をしてしまっていることになりますから、これではフォームが成り立ちません。 都合により、このindex.htmlの<form></form>内にはどうしても AAA.js を読み込ませなければならないのですが、「return_url」だけはp-456.html に書き直してフォームを送信しなければなりません。 AAA.jsは私が作ったものではなく、他ページでも読み込むので、AAA.js は<INPUT NAME=\"return_url\" TYPE=\"hidden\" VALUE=\"http://www.my-site.com/p-123.html\">という記述を外すことも他のソースを付け加えることも出来ないのですが、 index.html側に何か手を加えることで、この AAA.js で指定されているp-123.htmlをp-456.html に置き換えてフォームを送信するようにすることは出来ないでしょうか? 方法をご存知の方がいらっしゃいましたら、どうかよろしくお願い致します。

  • チェックボックスのデータの受け取り方について

    以下のようなチェックボックスを作ったとき、 test.phpではどうやって受け取ればよいのでしょうか? nameがそれぞれ違う場合は分かるのですが... 教えてください。 <form method="POST" action="test.php"> <input type="checkbox" name="color" value="red">赤</input> <input type="checkbox" name="color" value="blue">青</input> <input type="checkbox" name="color" value="white">白</input> <input type="checkbox" name="color" value="black">黒</input> <input type="submit" value="送信" > </form>

    • ベストアンサー
    • PHP
  • for文でpostの値を受け取る方法

    以下のようなコードで、postで投げられた値を、for文で、添え字を組み立てて受け取って表示したいのですが、添え字の生成が間違っているのか、うまくいきません。 何を修正すればよいか教えてください。 <form action="" method="post"> <input type="hidden" value="A" name="name_0"> <input type="hidden" value="B" name="name_1"> <input type="hidden" value="C" name="name_2"> <input type="hidden" value="D" name="name_3"> <input type="submit"> </form> <?php for($i =0; $i < 4; $i++){ if (!empty($_POST['name_$i'])) { print $_POST['name_$i']; } } ?>

    • ベストアンサー
    • PHP
  • チェックボックスから配列を使って値を受け取る方法

    チェックボックスから配列を使って値を受け取る方法について、 以下の通りに試してみたのですが、上手く行かず、 配列$fCに値が入りません。 どなたか原因を教えていただけないでしょうか。 ------------------------------------------------ hoge.html <form action="hoge.php"> <input type="checkbox" name="fC[]" value="hoge"> hoge <br> <input type="checkbox" name="fC[]" value="foo"> foo <br> <input type="checkbox" name="fC[]" value="bar"> bar <br> <input type="submit" value="OK"> </form> ---------------------------------------------------------- ------------------------------------------------- hoge.php <? for( $i=0; $i<count($fC); $i++ ) { print $i ." ::: " . $fC[$i] . "<br>\n"; } ?> ----------------------------------------------------------

    • ベストアンサー
    • PHP
  • 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>

専門家に質問してみよう