2011-06-14 58 views
0

我是網絡編程的新手,我想要驗證以下表單。爲什麼下面的javascript沒有被執行?

<form name="feature_request_view" action="FeatureRequestView.php" method="post" onsubmit="return validateAllFields()"> 
<p id="errorMsg" style="color:red">&nbsp;</p> 

<div class="noboder"> 
<label for="approval">* Approve the feature request?:</label> 
<input type="radio" name="approval[]" id="approval" value="1" /> Yes 
<input type="radio" name="approval[]" id="approval" value="0" /> No 
* 
</div> 

<div class="button-style"> 
<input type="submit" value="Submit" /> 
</div> 

</form> 

JavaScript代碼如下:

<script type="text/javascript" src="../validation.js"></script> 
<script type="text/javascript"> 
function validateAllFields() 
{ 
var approval = document.getElementsByName("approval"); 
var errors = document.getElementById("errorMsg"); 
errors.innerHTML = ""; 

if(checked(approval, errors, "Please choose an option to approve/disapprove the   feature request.")) 
{ 
    window.alert("got in the if block"); 
    errors.innerHTML = "Your decision has been submitted."; 
    return true;  
} 
return false; 
} 
</script> 

而我使用的檢查功能是:

function checked(element, error, msg) {   
    var boxchecked = false; 
    for (i = 0; i < element.length; i++) { 
     if (element[i].checked) { 
      boxchecked = true; 
     } 
    } 


    if (boxchecked) { 
     return true; 
    } 
    else { 
     error.innerHTML = msg; 
     return false; 
    } 
} 

我的問題是,代碼永遠不會被執行的JavaScript,因此即使單選按鈕沒有被填充也會傳遞它,並開始執行一些我用來填充表格的php。請幫忙!提前致謝。

+1

語法錯誤?任何顯示在控制檯中的東西? – 2011-06-14 18:01:40

+2

'name ='approval []「'屬性應該是'name =」approval「'以與您的javascript代碼相匹配。 – Genzer 2011-06-14 18:03:55

+0

...一致的縮進使得代碼更容易遵循。還要明確說明*什麼*沒有執行。這將導致答案。 – 2011-06-14 18:04:14

回答

1

我可以想象你的第一個問題是,你正在使用getElementsByName,而不是通過在正確名稱,例如您已將您的複選框命名爲approval[],而不是approval

我建議你也給他們唯一的ID,如:

<input type="radio" name="approval" id="approvalYes" value="1" /> 
<input type="radio" name="approval" id="approvalNo" value="0" /> 

ID是由客戶端,wheras回傳給服務器的數據使用使用name屬性的值來表示的name部分name/value對每個表單數據項。

你也可以達到你想要的東西用jQuery,通過簡單的操作:

var el = $('input[name="approval"]'); 
if (el.is(":checked")) { 
    // One of the radio buttons has been checked. 
} 
+0

Downvoted是因爲? – 2011-06-14 18:10:41

+0

我刪除了名稱屬性中的括號,但它仍然只是繞過JS – KyleL 2011-06-14 18:12:22

+0

我沒有downvote – KyleL 2011-06-14 18:16:11