主干验证问题
Backbone Validation issue
我使用了骨干验证插件(可从:https://github.com/thedersen/backbone.validation 获得)。我还使用了 Bootstrap 3。我想验证 onChange 或 onBlur 事件。
我是这样使用它的:
在模型.js中,我有这样的规则:
validation: {
miliage: {
required: true,
pattern: 'number',
msg: 'Укажите корректный пробег'
},
email : {
required: true,
pattern: 'email',
msg: 'Укажите корректный email'
},
},
在视图中.js渲染 html 后,我绑定了验证插件:
Backbone.Validation.bind( this, {
valid: function( view, attr, selector ) {
console.log('valid');
console.log( attr );
control = view.$('[' + selector + '=' + attr + ']')
group = control.parents(".form-group")
group.removeClass("has-error");
group.find(".help-block").remove();
},
invalid: function( view, attr, error, selector ) {
console.log('invalid');
console.log( attr );
control = view.$('[' + selector + '=' + attr + ']');
console.log( control );
group = control.parents(".form-group");
group.addClass("has-error");
group.find(".help-block").remove();
group.append("<span for="+attr+" class='help-block'>"+error+"</span>");
}
});
我使用 Bootsrap 规则显示错误消息。
在这个视图中,我有这样的事件:
"change #email" : "setEmail",
"change #miliage" : "setMiliage",
和适当的函数(我相应地为模型设置值):
setMiliage : function( event ) {
console.log( $( event.currentTarget ).val() );
this.model.set('miliage', $(event.currentTarget).val(),{validate : true});
},
setEmail : function( event ) {
this.model.set('email', $(event.currentTarget).val(),{validate :true})
},
如您所见,我将参数 validate:true 传递给方法集 - 以便每次在 onChange 事件触发时进行验证
问题:验证是对模型的每个方面(其所有属性)执行的,这就是回调函数对验证规则中定义的每个属性有效和无效触发的原因。我有两个或更多字段需要验证,当用户更改其中任何一个中的文本时 - 在所有字段中执行验证。
示例:当用户第一次打开页面时 - 字段"miliage"和"电子邮件"为空,当他们在第一个字段 (miiliage) 中键入值时,另一个字段表示发生了错误 - 因为它仍然是空的(用户尚未输入它),我只想显示第一个字段的消息。换句话说,当然第二个字段到目前为止是无效的,用户还没有到达那里。
问题:有没有办法对用户更改的唯一一个当前字段执行验证,并仅显示与之相关的错误?我还想在无效时将值放入模型中 - 我希望它只显示错误。另外,我想在提交表单上执行控件验证(在主干保存方法之前)
我知道有 isValid(field) 方法只能验证一个字段 - 但它不会触发有效或无效事件
提前感谢!
正确的方法是跟踪哪些字段至少更改了一次,并在处理"更改"或"模糊"事件时忽略其他字段上的验证错误。 当然,这不适用于处理"提交",其中不应忽略任何字段
我通过不为此输入设置模型中的默认值来解决此问题(仅验证更改的输入) - 验证仅适用于模型中已有的属性。当我需要 onChange onBlur 验证时,我使用 model.set('email','test@email.com',{validate:true}),当整个模型 - model.validate() 或 model.save()
- javascript中添加验证电子邮件的问题
- Javascript验证问题
- CRM身份验证问题
- 获取json结果的身份验证问题
- 关于验证和语义标记的一些基本HTML5问题
- 为密码验证实现正则表达式时出现问题
- JS表单验证问题
- 在 mongodb 和 expressjs 中验证事物的问题
- 如何在窗体中使用多个按钮解决验证问题
- 带有jquery验证问题的php表单
- jQuery表单验证和提交问题
- Javascript if语句问题,以及如何在jquery中验证颜色
- jQuery表单验证插件's只有文字字段的问题
- 在Internet Explorer 11中使用SoundCloud进行身份验证时出现问题
- Jquery表单验证脚本问题
- Google UiApp中的Google Apps脚本验证问题
- 小数、逗号和客户端验证的问题
- 使用 jQuery 问题验证和提交表单
- 自定义jQuery的问题.验证器规则
- 使用jquery有问题.验证器和格式散列一起工作