为什么以下的javascript没有被执行?

时间:2011-06-14 17:55:57

标签: 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 个答案:

答案 0 :(得分:1)

我想你的第一个问题是你使用的是getElementsByName,而没有传递正确的名称,例如您已将复选框命名为approval[],而不是approval

我建议你也给他们独特的ID,例如:

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

客户端使用ID,而传回服务器的数据使用name属性的值来表示每个项目的name对的name/value部分。表格数据。

你也可以通过简单的操作实现你想要的jQuery:

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