我使用了Backbone驗證插件(可從https://github.com/thedersen/backbone.validation獲得)。 我也使用Bootstrap 3.我想驗證onChange或onBlur事件。骨幹驗證問題
我用它作爲這樣的:
在Models.js,我有這樣的規則:
validation: {
miliage: {
required: true,
pattern: 'number',
msg: 'Укажите корректный пробег'
},
email : {
required: true,
pattern: 'email',
msg: 'Укажите корректный email'
},
},
在Views.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})
},
正如你所看到的,我通過PARAMS驗證:true to方法設置 - 爲了驗證每次onChange事件觸發時
問題:執行驗證在模型的每個方面(它的所有屬性),這就是回調函數有效和無效觸發驗證規則中定義的每個屬性的原因。我有兩個或更多的字段需要驗證,並且當用戶更改其中的任何文本時 - 在所有字段中執行驗證。
示例:當用戶第一次打開頁面時,字段'miliage'和'email'爲空,當他們在第一個字段中鍵入一個值(miliage)時,另一個字段表示錯誤發生 - 因爲它仍然是空的(用戶還沒有輸入),我想只顯示第一個字段的消息。換句話說,第二個字段當然是無效的,但用戶還沒有到達那裏。
問題:有沒有辦法在一個當前字段上執行驗證,只有一個用戶發生了變化,並且只顯示與其相關的錯誤?我還想在模型無效時將值放入模型中 - 我希望它只顯示錯誤。另外,我想執行控制驗證提交表單
我知道有哪些可以驗證只有一個字段和isValid(場)方法(骨架保存方法之前) - 但它不會觸發有效或無效的事件
提前致謝!
謝謝。我通過未在模型中爲此輸入設置默認值來解決此問題。模型中沒有屬性 - 沒有對更改或模糊進行驗證,但在提交整個模型驗證(當model.validate()觸發器)時仍然可用。 – programmer