• ベストアンサー

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

よろしくお願い致します。 表題の通りなのですが、「<input type="text" name="amount">」のような、name属性が同じテキストフォームが3つ(同様のページが複数あり、ページによっては最大10個くらいあります)あります。 テキストフォームの初期値は「0」になっており、CGIにデータを送る際、3つのフォームのうちどれかが「0」以外の数字であれば(1以上)データを送ることができ、すべてのフォームが「0」であればアラートを出して再入力してもらうようにいたいのですが、この場合、どのようなスクリプトを書けばよいのでしょうか? 分かりずらい部分は補足説明致しますので、どうぞご教授下さいますようお願い致します。

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

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

formが3つあるのか、ひとつのform内に同じ3つ同じ名前があるのでしょうか・・・ 送るのを制限するならこんな感じ? <script> function check(f){ var flg=false; for(var i=0;i<f.length;i++){ if(f[i].name=="amount" && parseInt(f[i].value)>0){ flg=true; break; } } if (!flg) alert("incorrect"); return flg; } </script> <form onSubmit="return check(this)"> <input type="text" name="amount" value="0"> <input type="text" name="amount" value="0"> <input type="text" name="amount" value="0"> <input type="submit" value="send"> </form>

patsaysnow
質問者

お礼

ご回答頂きありがとうございます。 お教え頂いた内容でできました。 ありがとうございました。

その他の回答 (2)

noname#84373
noname#84373
回答No.2

var c = 0, f = 0, o, t = document.getElementsByName('amount'); while (o = t[c++])f-=o.value; alert(f?'ok!':'No use!');

patsaysnow
質問者

お礼

ご回答頂きありがとうございます。 お教え頂いた内容でできました。 ありがとうございました。

  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

何がわからないのかよくわかりませんが、複数のフォームの扱いがわからないのだとすると、こんなかんじで。 forms=document.forms; for(var i=0; i<forms.length; ++i){  if(forms[i].amount.value=="0"){   ・・・・  } }

patsaysnow
質問者

お礼

ご回答頂きありがとうございます。 お教え頂いた内容でできました。 ありがとうございました。

関連するQ&A