2011-12-12 58 views
0

你好我試圖驗證選項,用戶檢查,如果他們沒有在頁面上籤任何東西,然後會顯示錯誤信息,讓他們檢查前,將繼續的Javascript驗證

這裏是我的代碼

for (var j=0;j<f10; j++) 
{ 
    if (document.pizza.field10[j].checked == true) 
     { check2 ++ ; } 
}// for ends heree 

if (check2 == 0) 
      { 
     alert("Error!!: Please select atleast one topping for Pizza."); 
    document.pizza.field10.focus(); 
    return false; 
      } 

/*Field05 Validation Ends Here*/ 

var f10 = document.pizza.field10.length ;// field05這是總長度和f10是變量。

我不知道什麼是錯的,即使用戶沒有檢查它仍然繼續

感謝

選擇這裏

編輯是html代碼

<p>Toppings:</p> 
<table width="400" class="toppings"> 
<tr> 

<td><label> 
    <input type="checkbox" name="field10" value="chicken" /> 
    Chicken</label></td> 

<td><label> 
    <input type="checkbox" name="field10" value="beef" /> 
    Beef</label></td> 
</tr> 
<tr> 
<td><label> 
    <input type="checkbox" name="field10" value="green pepper" /> 

    Green Pepper</label></td> 

<td><label> 
    <input type="checkbox" name="field10" value="olives" /> 
    Olives</label></td> 
</tr> 
<tr> 
<td><label> 
    <input type="checkbox" name="field10" value="onions" /> 
    Onions</label></td> 

<td><label> 
    <input type="checkbox" name="field10" value="red pepper" /> 
    Red Pepper</label></td> 
</tr> 
</table> 

EDIT2:這裏是表格標籤

<form name='pizza' id='pizza' method='post' 
       action='https://cs.senecac.on.ca/~int222/cgi-bin/assign3.cgi' 
       onsubmit='return FormValidation();'> 

這裏是提交按鈕

<p> <input class="button" name="Submit" type="submit" value="Submit" /> <input class="button" name="reset" type="reset" value="Reset" /> 

</p></div> 
+0

您可以在HTML中添加此腳本正在運行嗎?我的直覺是'field10 [j]'沒有完全按照你的意願去做 – Chris

+0

@Chris我在上面添加了html代碼謝謝! – Ali

+0

「f」應該在那裏嗎? 'for(var j = 0; j

回答

1

問題是

document.pizza.field10.focus(); 

我想,你不能對焦按鈕或複選框的領域:) 謝謝大家的幫助。

+0

問題是,你需要關注一個特定的實例的複選框或按鈕。 'field10'實際上是一個DOM元素的數組,而不是一個特定的元素。您可以在http://jsfiddle.net/mHKGK/上看到一個工作示例,其中按鈕和複選框以編程方式獲得焦點(使用jQuery,但過程與純JavaScript相似) – tvanfosson

1
被積極 check2

除了你的代碼執行前被設置爲0,並可能重新命名您的提交按鈕(按我的意見)。我會嘗試使用調試工具firebug來遍歷您的FormValidation()函數,以確保您的代碼實際上正在檢索DOM節點並查看check2正在增加的位置。

1

你需要對你的代碼更改爲類似this JSFiddle

最重要的部分是這樣的:

var fields = document.getElementsByName("field10"); 

(以及完整的代碼在這裏的時候JS小提琴到期)

var check2 = 0; 
var fields = document.getElementsByName("field10"); 

for (var j = 0; j < fields.length - 1; j++) { 
    if (fields[j].checked == true) { 
     check2++; 
    } 
} // for ends heree 
if (check2 == 0) { 
    alert("Error!!: Please select at least one topping for Pizza."); 
    return false; 
} 
+1

這是阿里(其實我問他發佈這個問題給我)我試着上面的代碼與-1但沒有運氣 - 存在相同的錯誤....請指導 –