我正在使用我構建的驗證器插件,並且每解決一個問題,似乎都會出現一個新問題。目前的問題是,當我使用一個類作爲驗證選擇器時,任何具有該類的類都將被驗證,只要其中一個被填充,那麼它就會被接受。現在,雖然對於某些情況這可能是可以的,但並非如此。表單驗證插件失敗,類
小提琴
http://jsfiddle.net/9gwuyras/2/
的驗證插件的完整代碼可以在小提琴發現爲好。代碼
部分,我認爲這個問題正在引起
用小提琴爲代碼 Lines 497 - 514
推理它可能並不重要類選擇是參考線set.selectors []數組多次,但它是一個可能的選項。
for(var control in controls){
if(typeof controls[control] != 'object'){
console.log("controls."+control+" must be an object. Skipping this element");
continue;
}else if(typeof controls[control].validate == 'undefined'){
console.log("controls."+control+".validate must be defined");
continue;
}
$this.find('input, textarea, select').each(function(){
if($(this).is('#'+control)){
setControlData('#'+control, controls[control]);
settings.selectors.push('#'+control);
}else if($(this).hasClass(control)){
setControlData('.'+control, controls[control]);
settings.selectors.push('.'+control);
}
});
}
Lines: 397 to 401
的理由是,它可能會針對只是類選擇的任何形式的團體,而不是重點
var formGroup = null;
if(type != "radio" && type != "checkbox"){
formGroup = $(element).closest('.form-group');
value = $(element).val();
}
這是最我有這麼遠,我將繼續在我完成工作時發佈更新。請申請任何其他可能需要的信息。所有幫助非常感謝!
編輯
我忘了最重要的一塊的情況。插件是如何調用
$('#test').validator({
controls : {
name : {
validate : "notEmpty"
},
dob : {
validate : ['notEmpty', 'isDateTime'],
dateFormat : 'm/d/Y'
},
gender : {
validate : "notEmpty"
}
},
bindInput : true,
onSubmit : function(){}
});
在controls
對象的鍵可以是一個ID或類名。