- ベストアンサー
name属性が同じフォームが複数ある場合の入力チェック
よろしくお願い致します。 表題の通りなのですが、「<input type="text" name="amount">」のような、name属性が同じテキストフォームが3つ(同様のページが複数あり、ページによっては最大10個くらいあります)あります。 テキストフォームの初期値は「0」になっており、CGIにデータを送る際、3つのフォームのうちどれかが「0」以外の数字であれば(1以上)データを送ることができ、すべてのフォームが「0」であればアラートを出して再入力してもらうようにいたいのですが、この場合、どのようなスクリプトを書けばよいのでしょうか? 分かりずらい部分は補足説明致しますので、どうぞご教授下さいますようお願い致します。
- みんなの回答 (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>
その他の回答 (2)
var c = 0, f = 0, o, t = document.getElementsByName('amount'); while (o = t[c++])f-=o.value; alert(f?'ok!':'No use!');
お礼
ご回答頂きありがとうございます。 お教え頂いた内容でできました。 ありがとうございました。
- notnot
- ベストアンサー率47% (4900/10358)
何がわからないのかよくわかりませんが、複数のフォームの扱いがわからないのだとすると、こんなかんじで。 forms=document.forms; for(var i=0; i<forms.length; ++i){ if(forms[i].amount.value=="0"){ ・・・・ } }
お礼
ご回答頂きありがとうございます。 お教え頂いた内容でできました。 ありがとうございました。
お礼
ご回答頂きありがとうございます。 お教え頂いた内容でできました。 ありがとうございました。