我是网络编程的新手,我有以下表格,我希望验证。
<form name="feature_request_view" action="FeatureRequestView.php" method="post" onsubmit="return validateAllFields()">
<p id="errorMsg" style="color:red"> </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。请帮忙!提前谢谢。
答案 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.
}