Javascript jQuery:尝试绑定事件时对对象的引用错误
好吧,有这样的问题。。。 我试图减少验证字段所需的代码量。 在本例中,我创建了一个数组,其中包含我想要绑定事件的元素ID。 像这样:Javascript jQuery:尝试绑定事件时对对象的引用错误,javascript,jquery,validation,events,bind,Javascript,Jquery,Validation,Events,Bind,好吧,有这样的问题。。。 我试图减少验证字段所需的代码量。 在本例中,我创建了一个数组,其中包含我想要绑定事件的元素ID。 像这样: var fields = new Array('#edit-field-first-name', '#edit-field-last-name', '#edit-field-mobile'); 然后我将事件绑定到一个循环中: for(var i = 0; i < fields.length; i++){ if($('#user-profile-form
var fields = new Array('#edit-field-first-name', '#edit-field-last-name', '#edit-field-mobile');
然后我将事件绑定到一个循环中:
for(var i = 0; i < fields.length; i++){
if($('#user-profile-form ' + fields[i]).length > 0){
var $obj = $('#user-profile-form ' + fields[i]);
$obj.bind({
blur : function(){
if(!reg_chars.test($obj.val())){
$obj.css('border','1px solid #A14')
.parent().children('div.description').css('color', '#A14');
}else{
$obj.css('border-style','solid').css('border-color','#C5C3C3 #EDEDED #EDEDED #C5C3C3').css('border-width','1px')
.parent().children('div.description').css('color', '#333');
};
}
})
}
}
for(变量i=0;i0){
var$obj=$(“#用户配置文件表单”+字段[i]);
$obj.bind({
模糊:函数(){
如果(!reg_chars.test($obj.val())){
$obj.css('border','1px solid#A14')
.parent().children('div.description').css('color','#A14');
}否则{
$obj.css('border-style','solid')。css('border-color','C5C3C3#eded#eded#C5C3C3')。css('border-width','1px'))
.parent().children('div.description').css('color','#333');
};
}
})
}
}
现在奇怪的事情发生了。
它正确地触发了“模糊”事件。但它总是引用数组中的最后一个元素。看起来它总是使用同一个对象,每次循环迭代都会覆盖它
所以我需要帮助。。。什么是解决方案?我建议您花些时间阅读John Resig的教程。它将帮助您解决这个问题,还将使您对Javascript有更深入的理解。在绑定函数的上下文($obj)赋值中的问题。试着换成
for(var i = 0; i < fields.length; i++){
if($('#user-profile-form ' + fields[i]).length > 0){
var $obj = $('#user-profile-form ' + fields[i]);
$obj.bind({
blur : function(){
var $input = $(this);
if(!reg_chars.test($input.val())){
$input.css('border','1px solid #A14')
.parent().children('div.description').css('color', '#A14');
}else{
$input.css('border-style','solid').css('border-color','#C5C3C3 #EDEDED #EDEDED #C5C3C3').css('border-width','1px')
.parent().children('div.description').css('color', '#333');
};
}
})
}
}
for(变量i=0;i0){
var$obj=$(“#用户配置文件表单”+字段[i]);
$obj.bind({
模糊:函数(){
var$input=$(此);
如果(!reg_chars.test($input.val())){
$input.css('border','1px solid#A14')
.parent().children('div.description').css('color','#A14');
}否则{
$input.css('border-style','solid').css('border-color','C5C3C3#eded#eded#C5C3C3').css('border-width','1px'))
.parent().children('div.description').css('color','#333');
};
}
})
}
}
如果它总是只拾取最后一个元素,那么“正确触发模糊事件”是什么意思?这是正常的,因为您给obj的最后一个值是表的最后一个值。因此,当您使用它时,您将检索最后一个受影响的值。谢谢,已经整理好了…:)我的问题是我需要有更多的睡眠…:())())