0
我正在學習js中的oops,並正在使用原型開發編寫簡單的驗證類。我不知道爲什麼我在validateField
函數中獲得undefined variable field
。但是,我可以在addListener function
中訪問這個變量。 有人可以解釋爲什麼變量未定義和幫助。 下面是我的代碼:原型函數中的未定義變量
var Validate = function(formId){
this.form=formId;
}
Validate.prototype.addValidation=function(field,condition,message){
this.field=field;
this.condition=condition;
this.message=message;
this.objform=document.getElementById(this.form);
this.addListener();
}
Validate.prototype.addListener=function(){
console.log(this.objform);
document.addEventListener("submit",this.validateField,false);
}
Validate.prototype.validateField= function(e){
e.preventDefault();
alert(this.field);
}
$(document).ready(function() {
var obj=new Validate('user');
obj.addValidation('fname','req','Field is Required');
})
I am able to solve my problem by binding "this" using
addEventListener("submit",this.validateField.bind(this),false);
但現在的問題是,當我嘗試調用addValidation
方法一對夫婦通過不同的字段名時間 - 例如'fname'和'lname' - 我收到顯示lname
這兩個時間的警報消息,因此覆蓋了fname
字段。我不明白爲什麼會出現這種情況。