JavaScript中选中单选按钮的问题
我正在处理一个JSP页面,该页面有多个单选按钮,ID分别为ans1、ans2、ans3。。。etc。。单选按钮的数量取决于上一页中的响应。用户应选择所有单选按钮的答案。i、 e.用户必须为所有单选按钮ans1、ans2、ans3选择响应。。。我已经为提交按钮点击事件编写了Javascript代码,如下所示,用于验证并确保用户已响应所有答案:JavaScript中选中单选按钮的问题,javascript,html,radio-button,Javascript,Html,Radio Button,我正在处理一个JSP页面,该页面有多个单选按钮,ID分别为ans1、ans2、ans3。。。etc。。单选按钮的数量取决于上一页中的响应。用户应选择所有单选按钮的答案。i、 e.用户必须为所有单选按钮ans1、ans2、ans3选择响应。。。我已经为提交按钮点击事件编写了Javascript代码,如下所示,用于验证并确保用户已响应所有答案: function beforeSubmit(){ var obj = document.quizcreen; var qCount = ob
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;
}
提交之前的函数(){
var obj=document.quizcreen;
var qCount=obj.totQuesHidden.value;
对于(var i=1;i您的循环中有一个return true
语句。因此,当选中第一个单选按钮时,它不会检查其他单选按钮
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;
}
提交之前的函数(){
var obj=document.quizcreen;
var qCount=obj.totQuesHidden.value;
var allChecked=true;
对于(var i=1;i,您的问题至少需要检查一个
做这件事
function isRadioChecked() {
return ($('input[type=radio]:checked').size() > 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;
}
循环将遇到一个选中的收音机,然后返回true
,在这种情况下您希望发生什么?忽略选中循环中的返回true。我正在尝试一些东西,这就是为什么我把它放在那里。我删除了调试代码,并添加了真实代码。您是否在某处看到jQuery标记?哦!对不起,我说了最短的方法。Actually它应该可以工作,但表单仍在提交中,尽管我没有选择所有单选按钮。下面是表单操作:如果我删除onsubmit=“return beforesmit();”,那么表单将在Javascript验证的情况下提交(如果onsubmit=“return beforesmit();”是否存在)javascript函数被调用两次,警报被生成两次。再次感谢您的帮助。@Sid对我有效。我唯一更改的是qCount。可能尝试警报此值,检查它是否已填充?
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;
}