Jquery 单选按钮的验证插件依赖性不起作用

Jquery Validation plug-in dependency from Radio buttons not working

仅当在另一个输入(收音机)中选中某些选项时,我才需要一些输入。简而言之,如果选择类型 1 文档,我需要类型 1 字段编号是强制性的。通过下面的 jsfiddle 可以更容易地进行可视化: https://jsfiddle.net/kbhatd51/2/

你能帮帮我吗?提前致谢

<form id="registerform" method="post">
  <div class="form-group">
    <label >Type of Document</label><br>
    <input type="radio" class="radioForm" id="fis" name="tipop" value="0" > <label for="fis"> Type 1</label><br>
    <input type="radio" class="radioForm" id="jur" name="tipop" value="1" > <label for="jur"> Type 2</label><br>
  </div> 
  <label for="tipop"> Number</label>
  <div class="form-group">
    <fieldset id="cpf1">

      <label for=cpf1>Type 1 No.:</label>
      <input type="number" class="form-control"  placeholder="000.000.000-00" name="cpf" id="cpf" >
    </fieldset>

    <fieldset id="cnpj1">
      <label for=cnpj1> Type 2 No.:
        <input type="number" class="form-control"  placeholder=" 00.000.000/0001-00" name="cnpj" id="cnpj"></label>
    </fieldset>
  </div>
  <input name="submit" type="submit" value="Submit!"> 
</form>

JS 验证:

$("#registerform").validate({
  rules: {
    cpf: {
      required: "#fis:checked"
    },
    cnpj: {
      required: "#jur:checked"
    }
  }
});

required 方法需要 return true 才能要求字段。 因此,您可以简单地将一个函数传递给 required,它将检查 radio 元素是否为 checked

required method

required( dependency-callback )

Type: Function()

The function is executed with the element as it's only argument: If it returns true, the element is required.

$("#registerform").validate({
  debug: true,
  rules: {
    cpf: {
      required: function(elem) {
        return $('#fis').is(":checked")
      }
    },
    cnpj: {
      required: function(elem) {
        return $('#jur').is(":checked")
      }
    }
  }
});

在此处查看 -- JSFiddle Example --