みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

こんにちは。現在、HTML、JavaScript、PHP、MySQLを

こんにちは。現在、HTML、JavaScript、PHP、MySQLを用いて簡単なシステム構築を学習しています。いきなりで恐縮ですが、詰まってしまっている状況をまとめます。

本システムではデータベースから「商品一覧表」というものを作成します。
チェックボックスと数量記入欄としてテキストボックスを設け、チェックを入れ、数量が記入されている場合のみ、次の購入画面に遷移します。
このとき、私としてはチェックされているにも関わらず数量未記入の場合にエラー判定を出したいのです。

次に、具体的なコードをまとめます。

<form name = "goods" method = "post" action = "abc.php">
<input type = "checkbox" name = "check1" value = "yes" >
<input type = "text" name = "quant1" size = "5" >
<input type = "checkbox" name = "check2" value = "yes" >
<input type = "text" name = "quant2" size = "5" >
<input type = "checkbox" name = "check3" value = "yes" >
<input type = "text" name = "quant3" size = "5" >
~中略~
<input type = "submit" value = "次へ" onclick = "return error();">
</form>

このようにnameの部分は連番になっていて、PHPで自動的に数字を付加させています。
私としてはerror()側でエラー判定を行う際に、

if(document.goods.check1.checked && document.goods.quant1.value ==""){
alert(数量未記入です);
}

といった流れをfor文などで効率良く回したいのです。
しかしcheck1とquant1の「1」の部分に変数を設定できません。
elements[i]とすればform内のエレメントオブジェクトを順番に見分けられるのでしょうけど、私としてはどうしてもcheckとquantを用いたいのです。

初心者同然なので、質問内容も支離滅裂だと思うのですが、もし何かアドバイスを頂けたら幸いです。よろしくお願いいたします。

投稿日時 - 2010-06-19 09:49:00

QNo.5979249

すぐに回答ほしいです

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

↓のような感じでアクセスしてみてはどうでしょう?

<html>
<head>
<title>テスト</title>
<script language="Javascript">
<!--
function check(){
for(i=1;i<=5;i++) {
value=document.forms['testform'].elements['check'+i].checked;
alert(i+"の状態は"+value+"です。")
}
}
-->
</script>
</head>
<body>
<form name="testform">
<input type="checkbox" name="check1"><br>
<input type="checkbox" name="check2"><br>
<input type="checkbox" name="check3"><br>
<input type="checkbox" name="check4"><br>
<input type="checkbox" name="check5"><br>
<input type="button" value="チェック" onclick="check();">
</form>
</body>
</html>

投稿日時 - 2010-06-19 10:21:09

お礼

御返事遅くなってしまい、申し訳ありません。
無事、問題を解決することができました。
私が作成していたコードと類似しており、スムーズに適用できたので
誠に勝手ながらベストアンサーとさせていただきました。
このたびはありがとうございました。

投稿日時 - 2010-07-04 10:00:32

ANo.1

このQ&Aは役に立ちましたか?

8人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ぜんかくくうはくは、はんかくに。
<!DOCTYPE html>
<title></title>
<body>
<form id = "goods" method = "post" action = "abc.php" onsubmit="errorCheck.call( this, event )">
 <p>
 <input type = "checkbox" name = "check1" value = "yes" >
 <input type = "text" name = "quant1" size = "5" >

 <input type = "checkbox" name = "check2" value = "yes" >
 <input type = "text" name = "quant2" size = "5" >

 <input type = "checkbox" name = "check3" value = "yes" >
 <input type = "text" name = "quant3" size = "5" >
 ~中略~
 <input type = "submit" value = "次へ">
 </p>
</form>


<script><!--
//@cc_on
function errorCheck (e) {
 var max = 3;
 var flag = false;
 var errMess = [ ];
 var elements = this.elements;
 var checkbox;
 var text;
 var i;
 
 for (i = 1; i <= max; i++) {
  checkbox = elements[ 'check' + i ];
  text = elements[ 'quant' + i ];
  if (checkbox && text) {
   if (checkbox.checked && '' == text.value) {
    errMess.push (i + '番目がへん');
    flag = true;
   }
  }
 }
 
 if( flag ) {
  alert( errMess.join('\n') );
  e./*@if( @_jscript ) returnValue = false @else@*/ preventDefault() /*@end@*/;
 }
}
// max = 3 は、ださいか?
//-->
</script>

投稿日時 - 2010-06-19 10:38:12

お礼

御返事遅くなってしまい、申し訳ありません。
無事、問題を解決することができました。
このたびはありがとうございました。

投稿日時 - 2010-07-04 09:58:49

あなたにオススメの質問