j查询动态验证单选按钮选择

jQuery Dynamic Validations on radio button select

本文关键字:单选按钮 选择 验证 动态 查询      更新时间:2023-09-26

我有一个表单。

<form>
    <fieldset>
        <div>
            <label>title</label>
            <input id="title" name="title" type="text">
        </div>
        <div>
            <label>Type</label>
                <input name="type" id="1" value="1" checked="checked" type="radio">1
                <input name="type" id="2" value="2" type="radio">2
            </div>
        </div>
        <div>
            <label for="3">3</label>
            <input id="3" name="3" placeholder="3">
        </div>
        <div class="2_details" style="display:none;">
            <input id="4" name="4" placeholder="4">
        </div>
    </fieldset>
</form>

它有2个单选按钮。 12 .当前具有类 2_details 的div 处于隐藏状态。只有单击单选按钮2才会激活,否则会被隐藏。

以下是对此的jquery:-

$('form').change(function (event) {
    var value = $('input[name=type]:checked', 'form').val();
    if (value == '2'){
        $('.2_details').show()
    }
    else{
        $('.2_details').hide()
    }
});

现在我想应用 jquery 验证。这种情况是这样的,如果选中单选按钮2,则 3 的值应大于 4 的值,否则接受 3 的任何值。

此外,如果选中2,则在类2_details上应用验证,否则不会对2_details应用验证。

这是我的验证码:-

$.validator.addMethod("3greater4", function(value, element) {
    return $('#4').val() > $('#3').val()
},  "* 3 should be greater than or equal to 4.");

 $('form').validate({
    rules: {
        title: {
            required: true,
            minlength: 10
        },
        3: {
            required: true,
            number: true,,
            3greater4 : true
        },
        4: {
            required: true, // only if radio 2 is checked.
            number: true,,
            3greater4 : false
        }
    }
});

不需要自定义规则,您可以使用

jQuery(function($) {
  $('input[name="type"]').change(function(event) {
    $('.2_details').toggle(this.value == 2)
  });
  $('form').validate({
    rules: {
      title: {
        required: true,
        minlength: 10
      },
      3: {
        required: true,
        number: true
      },
      4: {
        required: true,
        number: true,
        min: function() {
          return +$('#3').val() || 0;
        }
      }
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/jquery.validate.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.13.1/additional-methods.js"></script>
<form>
  <fieldset>
    <div>
      <label>title</label>
      <input id="title" name="title" type="text">
    </div>
    <div>
      <label>Type</label>
      <input name="type" id="1" value="1" checked="checked" type="radio">1
      <input name="type" id="2" value="2" type="radio">2
    </div>
    <div>
      <label for="3">3</label>
      <input id="3" name="3" placeholder="3">
    </div>
    <div class="2_details" style="display:none;">
      <input id="4" name="4" placeholder="4">
    </div>
  </fieldset>
  <input type="submit" value="save" />
</form>