2011-07-31 16 views
0

私はラジオボタンとチェックボックスの両方でフォームを作成しています。私はjavascriptのonsubmitとphpの両方でフォームを検証したいと思います。 PHPを動作させるには、名前に[]をつけたチェックボックスとラジオボタンを書く必要があります(例えば、 )。他のトピックを検索し、ラジオボタンのデフォルトチェック値を入れて、 。それはいいです。 しかし、人々が3つ以上のチェックボックスをチェックするようにする必要もあります。これは私が未定義 私のHTMLコードのプロパティ 『長さ』を読み込めません」というエラーを取得PHPとJSのチェックボックスを使って作業する

var count = 0; 
for (x=0; x<document.fic_rec.rec_genre.length; x++){ 
    if (document.fic_rec.rec_genres[x].checked){ 
     count++; 
    } 
} 

if (count==0){ 
    rec_error += "at least 1 genre; "; 
} 
else if (count>3){ 
    rec_error += "no more than 3 genres; "; 
} 

で行うことはできませんが、次のようになります!の

<ul class="sub_ul"> 
<li class="sub"> 
<input type="checkbox" name="rec_genres[]" id="action"value="action" /> 
<label for="action">Action/Adventure</label></span><li class="sub"><u>Alternative reality</u></li> 
<li class="sub_sub"><input type="checkbox" name="rec_genres[]" id=au_history  value="au_history" /> 
<label for="au_history">AU History</label></li><li class="sub_sub"><input type="checkbox" name="rec_genres[]" id=au_universe value="au_universe" /> 
<label for="au_universe">AU Universe</label></li><li class="sub_sub"><input type="checkbox" name="rec_genres[]" id=au_other  value="au_other" /> 

などなど

ヘルプ感謝を!!

答えて

0

たとえば、elements-collectionを使用してこれらの要素にアクセスします。

document.fic_rec.elements['rec_genres[]'] 

注意: 要素が複数見つかった場合、nodeListを返します。
指定された名前を持つ要素が1つしかない場合、nodeListではなく要素自体が返されます。

また、これは関係なく常に発見されたどのように多くの要素、nodelistとも返さないだろう...

document.querySelectorAll('form[name="fic_rec"] input[name="rec_genres[]"]') 

querySelectorAll()(IE < 8でサポートされていない)を使用することができます。コメントへ


回答:

var radio_count = 0;   
for (var i=0;i<document.fic_rec.elements['rec_pub_length[]'].length;i++) 
{ 
    if (document.fic_rec.elements['rec_pub_length[]'][i].checked) 
    { 
    radio_count = 1; 
    break; 
    } 
} 
if (radio_count != 1) { rec_error += "story length; "; } 
+0

ありがとう!要素の数を調べるにはどうすればよいですか? – user866339

+0

lengthプロパティを確認します。要素が1つだけの場合は「未定義」になります。そうでない場合は、lengthがいくつあるかを示します。 –

+0

私はおそらくスーパースーパーn00bされている...私はどのようにループをやっている必要がありますか? \t radio_count = 0;用 \t \t \t(VAR i = 0; iは++; iが[ 'rec_pub_length []']長document.fic_rec.elementsを<){ \t \t \t \t(document.fic_rec.rec_pub_length [I] .checkedを){もし \t \t \t \t radio_count = 1; (!radio_count = 1) \t \t \t \t} \t \t \t} \t \t \tなら{rec_error + = "ストーリー長;"; } – user866339