使用jQuery将验证结果组合在一条消息中

时间:2016-12-23 10:52:24

标签: jquery jquery-validate

我正在使用jQuery验证插件来提供一些检查,我可以添加或删除它们。能够将输出组合为一个字符串的最佳方法是什么?在下面的密码1字段的代码中,我一次只能收到一条消息,因此通常会说:

'密码必须为8个字符'

或,'密码必须包含数字'

很高兴地说,'密码必须是8个字符。密码必须包含数字。密码必须包含字母'。

我很欣赏内置的长度,但可以很容易地将其更改为addMethod。

感谢。

<script>
jQuery.validator.addMethod("containNumber", function(value, element) {
    return this.optional(element) || (/\d/.test(value));
}, "Password must contain a number");

jQuery.validator.addMethod("containUpper", function(value, element) {
    return this.optional(element) || (/[A-Z]/.test(value));
}, "Password must contain an uppercase character");

jQuery.validator.addMethod("containLower", function(value, element) {
    return this.optional(element) || (/[a-z]/.test(value));
}, "Password must contain a lowercase character");

$( "#passwordchange" ).validate({
  rules: {
    password1: {
      required: true,
      minlength: 8,
      maxlength: 64,
      containNumber : true,
      containUpper: true,
      containLower: true
    },
    password2: {
        equalTo: '#password1'
    }
  }
});
</script>

1 个答案:

答案 0 :(得分:0)

希望它对你有所帮助

jQuery.validator.addMethod 中,如果出现任何错误消息,则插件会在input元素的底部创建一个.error类,其中包含特定的错误消息。

你应该做的是收集所有.error类文本迭代错误meassge和concat并显示字符串,如下面的代码。在获得dom中存在的错误类之后输入代码,否则它将无法工作。

var str = '';
$('.error').each(function() { 
   str += $(this).text() + ' '; 
});

console.log(str); // it concats all the error message

在html中创建一个像

一样的div
<div class="concaterror"></div>
$('.error').hide(); // Hide all the error class
$('.concaterror').html(str); // append the concat error messages

这里隐藏整个.error类。创建一个div请在此处附加str变量并显示您想要的位置。