我有这两个单选按钮,我正在检查是否使用下面的javascript检查其中一个。当我输入这个问题时,我意识到我的脚本只检查是否选中了特定的单选按钮。如何检查以确认是否检查了其中一个?
jQuery(".GenderM1").each(function() {
var isChecked = jQuery(this).prop('checked');
if (isChecked == false) {
e.preventDefault();
pass = "false";
alert("Please select gender.");
return false;
}
});
<td>
<input type="radio" name="persinfo_gender[0]" <?php if($row_c->persinfo_gender == "0") echo "checked";?> id="maleradio" class="GenderM1" value="0" required>M
<br>
<input type="radio" name="persinfo_gender[0]" <?php if($row_c->persinfo_gender == "1") echo "checked";?> id="female_redio" class="GenderM1" value="1" required>F
</td>
答案 0 :(得分:1)
您的代码
isChecked == false// Use !isChecked
^
您将布尔变量与布尔值进行比较,直接使用它:
e
您正在使用未声明的.each
,可能是因为e.preventDefault();
^
收到了一个事件。
var isChecked = false;
jQuery(".GenderM1").each(function() {
isChecked = isChecked || jQuery(this).is(':checked');
if (isChecked)
return false;
});
if (!isChecked) {
var pass = "false";
alert("Please select gender.");
}
主要问题是你的循环比较每个radiobutton.checked属性,你需要检查是否至少有一个被检查以停止你的循环。
此代码段显示如何检查是否已检查单选按钮:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="persinfo_gender[0]" class="GenderM1" value="0" required>M
<br>
<input type="radio" name="persinfo_gender[0]" checked class="GenderM1" value="1" required>F
&#13;
$('.GenderM1:checked').length
&#13;
参见?,检查单选按钮时未显示警告。
现在,了解一个radiobutton组是否至少检查过其中一个的最佳方法是:
bmp
上面的行返回检查了多少个单选按钮(1或0),因为您只能选择其中一个。该选择器也适用于复选框。
答案 1 :(得分:-2)
方法.prop()从jQuery 1.6开始可用,在以前的版本中你必须使用方法.attr()
你使用哪个版本?
我仍然认为你想要做的是,如果你没有选择显示错误的类型和你拥有的代码,它将无法正常工作。为此,您必须执行以下操作:
1-标记其中一个默认选中,即默认情况下将其设置为已选中,这样可以消除未标记错误的可能性。 2-修改你执行的验证,否则它将始终返回false,因为只有一个将被选中,你将完成整个单选按钮排列,这样当你到达未选择的单选按钮时,它将返回false。
if ($('input[class="GenderM1"]').is(':checked')) {
// do something;
} else {
//do another thing;
}