aralejs / validator

Form Validator Widget
aralejs.org/validator/
41 stars 28 forks source link

校验规则组合bug #5

Closed lianqin7 closed 11 years ago

lianqin7 commented 11 years ago

代码如下:

// 非email规则
Validator.addRule('notEmail', Validator.getRule('email').not());
Validator.setMessage('notEmail', '不能输入email!');

// 某个字段添加rule
validator.addItem({
    element: '[name=subject]',
    required: true,
    rule: 'notEmail',
    errormessageNotEmail: '特殊的错误提示不会显示!'
});

在subject字段输入email内容后,错误提示会出现,但是不会出现个性化定制的提示特殊的错误提示不会显示!,而是统一提示不能输入email!'

代码追踪后发现是item.js的66行这里有问题

 _metaValidate(this.element, this.get('required'), rules, this.get('display'), function(err, msg) {
    if (err) {
         var message = that.get('errormessage') || that.get('errormessage' + upperFirstLetter(err)) || msg;
    } else {
         var message = msg;
    }
    that.trigger('itemValidated', err, message, that.element);
    callback && callback(err, message, that.element);
});

err本来在校验不通过对时候要返回ruleName,比如上面代码的notEmail,但结果在通过not方式由rule:email生成的rule:notEmail的校验过程中,err返回的是true,导致'errormessage' + upperFirstLetter(err)的结果不正确

具体原因没有继续追踪查找

shaoshuai0102 commented 11 years ago

谢谢反馈,已经在 0.9.1 开发版中修复。抱歉这么久才处理。