如果所有三个单选按钮都是假的,请不要验证

时间:2018-02-07 12:05:25

标签: javascript jquery html jquery-validate

我有三个不同的代码块,带有单选按钮。

唯一改变的是id和它们的名称。

我需要的是:如果在.上检查了所有单选按钮(用户选择检查所有"否"),表单将无法生效。

我目前正在使用jQuery验证,而我所需要的只是单选按钮都是必需的。

我尝试使用此代码,但它无效。



Select-Object

value="false"




编辑: 最后,我将Ele的代码回复与jQuery验证插件混合使用,该插件在我正在使用的门户网站上使用。 这是代码:

registerForm.validate({
      rules: {
        'data': {
          required: {
            depends: function() {
              return $('.yesandno').is(':checked').val() === "false";
            }
          }
        });

3 个答案:

答案 0 :(得分:1)

您可以使用过滤器并检查长度:

// this filter will only return radios that are checked and have a value of false
$('.yesandno').filter(function() {
   return this.checked && this.value === "false";
}).length === 3;

答案 1 :(得分:0)

您可以检查至少一个true值以通过验证,而不是检查false的所有三个单选按钮以验证失败。这有助于扩展HTML无线电选项,而无需一次又一次地更改JQuery代码以查找false选项选项的长度匹配。

function passValidation(){
    $('.yesandno').filter(function() {
       return this.checked && this.value === "true";
    }).length > 0;
}

在验证期间调用passValidation()函数,如果它返回true,则至少有一个选中了Yes选项的单选按钮。来自false的{​​{1}}表示未选择passValidation()选项。

答案 2 :(得分:0)

使用jQuery选择器可以完成

$('.yesandno:checked[value="false"]').size() === 3

请查看此代码段

$('button').click(() => {
  if ($('.yesandno:checked[value="false"]').size() === 3) {
    console.log('All radionbuttos were checked to NO');
  } else {
    console.log('Either at least one Radionbutto is YES or a (YES/NO) radiobutton was not still checked!');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div>
  <input type="radio" class="yesandno" id="yes-balance" tabindex='9' name="data" value="true" />
  <label for="yes-balance" class="yes">YES</label>
  <input type="radio" class="yesandno" id="no-balance" tabindex='9' name="data" value="false" />
  <label for="no-balance" class="no">NO</label>
</div>
<div>
  <input type="radio" class="yesandno" id="yes-balance" tabindex='9' name="data2" value="true" />
  <label for="yes-balance" class="yes">YES</label>
  <input type="radio" class="yesandno" id="no-balance" tabindex='9' name="data2" value="false" />
  <label for="no-balance" class="no">NO</label>
</div>
<div>
  <input type="radio" class="yesandno" id="yes-balance" tabindex='9' name="data3" value="true" />
  <label for="yes-balance" class="yes">YES</label>
  <input type="radio" class="yesandno" id="no-balance" tabindex='9' name="data3" value="false" />
  <label for="no-balance" class="no">NO</label>
</div>
<br>
<button>Click to see selected value!</button>

请参阅?当true时,条件为size === 3