javascript - 如何在 Jquery Validation 中的一个错误中验证两个字段

标签 javascript jquery jquery-validate

我有两个字段:date_start 和 date_end,我想在 jQuery Validate 中验证这两个字段。

验证器有两个错误,但我只需要一个......

enter image description here

java JSP 表单的一部分

<div class="form-group user-edit-form-group">
  <label for="input_cameras_limit" class="col-xs-4 control-label">Cameras limit</label>

  <div class="col-xs-4">
    <input name="key_cameras_limit" id="input_cameras_limit" type="text"
    class="form-control user-edit-input" placeholder="" value="">
  </div>

  <div class="user-edit-error-wrapper">
  </div>
</div>

JS验证部分

$('#partner_key_settings_form').validate({

    rules: {
        key_valid_from: {
            required: true,
            date: true
        },
        key_valid_till: {
            required: true,
            date: true
        }

    },
    messages: {
        key_valid_from: {
            required: JsMultiLang.getWords('partner', 'validationPromoCodeDate')

        },
        key_valid_till: {
            required: JsMultiLang.getWords('partner', 'validationPromoCodeDate')
        }
    },

    errorClass: "user-search-error",

    errorPlacement: function (error, element) {

        if (element.attr("name")=="key_valid_from" ||element.attr("name")=="key_valid_till"){
             error.appendTo($(element).parent().parent().parent().find('.user-edit-error-wrapper'));
             console.log(error.appendTo($(element).parent().parent().parent().find('.user-edit-error-wrapper')==undefined))
        }

    },

    highlight: function (element) {
        $(".user-edit-server-error").remove();
        $(element).closest('.form-group').addClass('has-error');

        var tabPaneId = $(element).closest('.tab-pane').attr('id');
        $('a[href="#' + tabPaneId + '"]').addClass('has-error');
    },

    unhighlight: function (element, error, valid) {
        $(element).closest('.form-group').removeClass('has-error');

        var tabPaneId = $(element).closest('.tab-pane').attr('id');
        var hasErrorDivsId = '#' + tabPaneId + ' .has-error';
        var errorDivsOnTabSize = $(hasErrorDivsId).size();
        if (errorDivsOnTabSize < 1) {
            $('a[href="#' + tabPaneId + '"]').removeClass('has-error');
        }
    },

    success: function (error) {
        error.remove();

    }
})

最佳答案

如果需要,您需要添加一个 group object 来对验证和 errorPlacement 进行分组。

rules: {
    key_valid_from: {
      required: true,
      date: true
    },
    key_valid_till: {
      required: true,
      date: true
    }

  },
  groups: {
    key_valid_from: "key_valid_from key_valid_till"
  },
  errorPlacement: function(error, element) {
    if (element.attr("name") == "key_valid_from" || element.attr("name") == "key_valid_till")
      error.insertAfter('input[name=key_valid_till]');
    else
      error.insertAfter(element);
  }

关于javascript - 如何在 Jquery Validation 中的一个错误中验证两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42090090/

相关文章:

jquery - 当 iframe 中打开新页面时,如何让 jQuery colorbox 调整大小?

javascript - 如何在 jQuery 中更改浏览器宽度/高度?

javascript - Jquery验证: How to validate that all or none of a group of textboxes have values?

javascript - Jest 无法解析带有 @ (at) 字符的导入

Javascript:在另一个延迟函数中调用延迟函数

javascript - JavaScript 不支持带有局部变量的闭包吗?

jquery 灯箱画廊标题位置

javascript - 跨平台、跨浏览器的 Javascript 性能分析

javascript - 如何在 Bootstrap 的附加组件后显示 jQuery Validate 错误消息?

javascript - 具有远程验证的 jQuery 不等待服务器的回答