2011-07-31 36 views
0

我正在用單選按鈕和複選框創建表單。我想用javascript onsubmit和php驗證表單。對於php的工作,我必須在名稱(例如) 名稱中使用[]編寫複選框和單選按鈕。我搜索了其他主題,並看到我可以爲單選按鈕設置默認選中值,以避免人們可能無法選擇值。沒關係。 但是,我還需要確保人員檢查不超過3個複選框。這可以用使用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; "; 
} 

做不是我得到一個錯誤說「無法讀取的不確定 我的HTML代碼財產‘長度’是這樣的:

<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

使用例如元素集合來訪問這些元素:

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

請注意: 如果找到多個元素,將返回一個nodeList。
如果只有一個具有給定名稱的元素,它將返回元素本身而不是nodeList。

您也可以使用querySelectorAll()(不是IE < 8支持)

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

...這總是會返回一個節點列表,不管有多少元素被發現。


答到註釋:

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

檢查長度屬性。如果只有1個元素,它將是「未定義」,否則長度將告訴你有多少元素被發現。 –

+0

我可能正在超級超級n00b ......我該如何做循環? \t radio_count = 0; \t \t \t爲(VAR I = 0; I user866339