我正在开发一个JSP页面,它有多个带有ID ans1, ans2, ans3... etc
的单选按钮。单选按钮的数量根据前一页的响应而有所不同。用户应为所有单选按钮选择答案。即用户必须为所有单选按钮ans1,ans2,ans3等选择响应。我已经为提交按钮点击事件编写了一个Javascript代码,如下所示进行验证,并确保用户已回复所有答案:
function beforeSubmit(){
var obj = document.quizcreen;
var qCount = obj.totQuesHidden.value;
for (var i=1; i<=qCount; i++){
if(document.getElementById("ans"+i).checked){
// checked
}else{
alert("Please select ateleast one option"); // unchecked
return false;
}
}
obj.submit();
return true;
}
由于某些原因,上面的代码无效。如果未选择所有单选按钮,则不应提交表单。请帮助,我知道这是一个非常简单和常见的问题,但我无法弄清楚。提前谢谢。
以下是表单操作:
<form name="quizcreen" id="quizcreen" method="post" action="QuizResult.jsp" onsubmit = "return beforeSubmit();">
答案 0 :(得分:3)
循环中有return true
语句。因此,当检查第一个radiobutton时,它不会检查其他的。
function beforeSubmit(){
var obj = document.quizcreen;
var qCount = obj.totQuesHidden.value;
var allChecked = true;
for (var i=1; i<=qCount; i++){
if(! document.getElementById("ans"+i).checked){
allChecked = false;
}
}
if(! allChecked){
alert("Please select ateleast one option"); // unchecked
return false
}
obj.submit();
return true;
}
答案 1 :(得分:0)
好的,我发现了一种更好的方法来处理我的场景,所以我正在为你的信息分享我的代码:
function beforeSubmit() {
var obj = document.quizcreen;
var allChecked = true;
$("input:radio").each(function() {
var name = $(this).attr("name");
if ($("input:radio[name=" + name + "]:checked").length == 0) {
allChecked = false;
}
});
if (!allChecked) {
alert("Please answer all the questions."); // unchecked
return false;
}
obj.submit();
return true;
}
答案 2 :(得分:-1)
你的问题至少要检查一个。
做这件事
function isRadioChecked() {
return ($('input[type=radio]:checked').size() > 0);
}