使用javascript .prop检查两个单选按钮('已检查');

时间:2018-01-31 16:14:34

标签: javascript php jquery

我有这两个单选按钮,我正在检查是否使用下面的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>

2 个答案:

答案 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属性,你需要检查是否至少有一个被检查以停止你的循环。

此代码段显示如何检查是否已检查单选按钮:

&#13;
&#13;
<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;
&#13;
&#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;
    }