アプリ版:「スタンプのみでお礼する」機能のリリースについて

初めて投稿いたします。 宜しくお願いいたします。

postmailで注文フォームを制作中なのですが、複数の商品の個数(デフォルトでは0に設定)をselectで選択させようとしています。
例:
<tr><td class="center">NO.01</td><td>あんまん</td>
<td><select name="あんまん"><option selected value="">0</option>
<option value="1">1</option>
(~略~)
<option value="9">9</option></select></td></tr>
<tr> <td class="center">NO.02</td><td>にくまん</td>
<td><select name="にくまん"><option selected value="">0</option>
<option value="1">1</option>
(~略~)
<option value="9">9</option></select></td></tr>

もし、すべての商品の個数が「0」に設定されている場合はエラーを出して、cgiでの送信を中止させたいのですが、どのようなjavascriptをソースに書けば良いでしょうか? 
宜しくお願いいたします。

A 回答 (3件)

name の値が すべて あんまんだった!それ間違い!

    • good
    • 0

<html>


<body>
<form onSubmit="return checkForm()">
<table border="1">
<tr>
<td class="center">NO.01</td>
<td>あんまん</td>
<td><select name="あんまん" id="s1"></select>個</td>
</tr>
<tr>
<td class="center">NO.02</td>
<td>肉まん</td>
<td><select name="あんまん" id="s2"></select>個</td>
</tr>
<tr>
<td class="center">NO.03</td>
<td>カレーまん</td>
<td><select name="あんまん" id="s3"></select>個</td>
</tr>
<tr>
<td class="center">NO.04</td>
<td>ピザまん</td>
<td><select name="あんまん" id="s4"></select>個</td>
</tr>
<tr>
<td class="center">NO.05</td>
<td>中華まん</td>
<td><select name="あんまん" id="s5"></select>個</td>
</tr>
<tr>
<td class="center">NO.10</td>
<td>カスタムまん<br>
<input type=text name="カスタムまんの中身" value="" id="t1">
</td>
<td><select name="カスタムまん" id="s6"></select>個</td>
</tr>
</table>
<input type="submit" value="送信">
</form>
<script>
window.onload=function(){
for(var i=1;i<7;i++){
setSelectOption('s'+i,'指定してください 1 2 3 4 5 6 7 8 9'.split(' '),'0,1,2,3,4,5,6,7,8,9'.split(','),0,0);
}
}
function checkForm(e){
for(var i=1,c=0;i<7;i++){ c+=document.getElementById('s'+i).value; }
if(c==0 && document.getElementById('t1').value=='') { alert('なんか買え~!');return false; }
return true;
}
function setSelectOption(id_name ,text_array, value_array, default_value, select_value){
var o = document.getElementById( id_name );
while( o.hasChildNodes() ) o.removeChild( o.lastChild );//子ノードを削除する
for(var i=0, n, mx = text_array.length; i<mx; i++){
var n = new Option( text_array[i], value_array[i],(default_value==value_array[i]),(select_value==value_array[i]));
try{ o.add( n, null) } catch( ex ){ o.add( n ); }
}
}
</script>
    • good
    • 0
この回答へのお礼

ありがとうございます。
解決しました!

お礼日時:2008/10/01 10:49

こんなかんじで・・・



<script>
function checkForm(f){
var flg=false;
for(var i=0;i<f.length;i++){
if(f[i].type=="select-one" && f[i].selectedIndex>0){
flg=true;
break;
}
}
if(!flg) alert("なんか買って!")
return flg;
}
</script>
<form onSubmit="return checkForm(this)">
NO.01:あんまん<br>
<select name="あんまん">
<option selected value="">0</option>
<option value="1">1</option>
<option value="9">9</option>
</select><br>
NO.02:にくまん<br>
<select name="にくまん">
<option selected value="">0</option>
<option value="1">1</option>
<option value="9">9</option>
</select><br>
<input type="submit" value="go!">
</form>

ただし、javascriptのチェックは補助なので、cgi側でも
チェックをしてなにも買ってない場合は、エラーを出すような
仕組みを作る必要はあります。
    • good
    • 0
この回答へのお礼

ありがとうございます! たいへん勉強になります。
cgiでは、注文内容以外の項目に未記入があった場合のエラーを指定しています。

ところで、新しく付け加えたい部分がありまして・・・
もしよければ、再度ご相談に載ってくださると大変助かります。

「select値が1つも選択されていないときだけでなく、それプラス
 特定のテキストボックスにも記入がない時」
 にjavascriptエラーを出したいと思っています。

例えば、カスタムまんという商品を作り、
中身をテキストボックスに記入できるフォームを作ったとします。

<tr><td class="center">NO.01</td><td>あんまん</td>
<td><select name="あんまん"><option selected value="">0</option>
<option value="1">1</option>
<tr><td class="center">NO.10</td><td>カスタムまん</td>
<td>
<input type=text name="カスタムまんの中身" value="">
</td>

この場合、あんまんの個数select値も0、カスタムまんの中身テキストボックスも無記入だった場合に
エラーが出せるjavascriptの記述はどのようになりますでしょうか。

お忙しい中たびたびすみませんが、宜しくお願いいたします・・・

お礼日時:2008/09/25 15:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!