2017-06-02 41 views
-1

我有一个验证规则,其中密码必须是6个字符或更多。但是这个验证规则不被满足/失败是用户密码包含特殊字符。骨干验证器长度规则不计算特殊字符?

例如;如@ _a&^的密码导致验证者说Password must be 6 or more characters in length.。也许验证器不计算特殊字符?一个密码,如abc123是好的,验证器工作(不抱怨)。密码,如abc验证程序工作并显示错误消息。

如何获取验证器来计算特殊字符?我是否必须推出自己的验证器?

validation: function() { 
     return { 
      password: [ 
       { required: true, msg: _('Password is required.').translate() } 
      , { length: 6, msg: _('Password must be 6 or more characters in length.').translate() } 
      ] 
     , password2: [ 
       { required: true, msg: _('Password is required').translate() } 
      , { equalTo: 'password', msg: _('Password and Confirm Password do not match').translate() } 
      ] 
     } 
    } 

回答

0

我测试了它,它按预期工作。您共享的代码不会显示问题。

话虽如此,你应该可能使用minLength因为任何长度超过6个字符的密码与您当前的验证不正确。

_.extend(Backbone.Model.prototype, Backbone.Validation.mixin); 
 

 
var Model = Backbone.Model.extend({ 
 
    validation: function() { 
 
    return { 
 
     password: [{ 
 
     required: true, 
 
     msg: 'Password is required.' 
 
     }, { 
 
     length: 6, 
 
     msg: 'Password must be 6 or more characters in length.' 
 
     }] 
 
    }; 
 
    } 
 
}); 
 

 
var model = new Model({ password: '@ _a&^' }); 
 
console.log('@ _a&^', model.validate()); 
 
model.set('password','@ _a&'); 
 
console.log('@ _a&', model.validate());
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.validation/0.11.5/backbone-validation-min.js"></script>