我有一个表单字段ID的多维数组,以及它们对它们进行的错误检查。我想为每个错误字段添加一个模糊事件,因此当用户离开它以转到下一个字段时,它将确保该字段有效。
我创建了一个带有blur事件创建的for循环和一个警告,以确保为该字段创建模糊。警报告诉所有字段都添加了验证,但是当我在页面上测试时,无论我要离开哪个字段,模糊事件都只验证数组中的最后一个字段。
这是功能。
function SetErrorFields(fields) {
var ErrorFields = fields;
for (Field in ErrorFields) {
alert("Field: "+ErrorFields[Field][0]+" | Validations: "+ErrorFields[Field][1]);
$('#'+ErrorFields[Field][0]).blur(function(){
Validate(ErrorFields[Field][0],ErrorFields[Field][1]);
});
}
}
我尝试过改变一些事情,但要么没有任何效果,要么事情变得更糟。贝娄是我尝试过的清单和结果。
将ErrorFields [Field] [0]更改为Field [0],但会将警报中的所有内容更改为“undefined”。
使用以下代码会在离开字段时抛出“x is undefined”错误。
for (x=0; x<ErrorFields.length; x++) {
alert("Field: "+ErrorFields[x][0]+" | Validations: "+ErrorFields[x][1]);
$('#'+ErrorFields[x][0]).blur(function(){
Validate(ErrorFields[x][0],ErrorFields[x][1]);
});
}
我无法弄清楚每种方法。
答案 0 :(得分:2)
有一个名为eventData的有用参数。它允许您在声明事件时将数据发送到事件。以下是有效的。
function SetErrorFields(fields) {
ErrorFields = fields;
for (Field in ErrorFields) {
alert(ErrorFields[Field][0]+" | "+ErrorFields[Field][1]+" | "+$('#'+ErrorFields[Field][0]).val());
$('#'+ErrorFields[Field][0]).blur({fld: ErrorFields[Field][0], err: ErrorFields[Field][1]}, function(event){
Validate(event.data.fld,event.data.err);
});
}
}
对于它的作用有更深入的解释here。