您只是想知道这是否是正确的方法。我知道我们可以使用对象表示法传递数据并使用它。但只是想知道下面的代码是否正确。我不确定以下语法。
function isValid(errMessage,errId,errClass){
alert();
if($("#"+errId).val()==""){
$("."+errClass).show();
$("."+errClass).html(errMessage);
return false;
}else{
$("."+errClass).hide();
}
}
$("#fname").on("blur",isValid("please enter first name","fname","ferror"));
我见过如下语法:
function test(){
alert("Hello World");
}
$("#fname").on("blur",test);
检查此链接是否输出 http://jsfiddle.net/susheel61/M2jsX/
所以只想弄清楚传递参数是否直接起作用。
答案 0 :(得分:3)
您的代码调用isValid
方法并将结果指定为blur
处理程序,因此它不是正确的。你应该做这样的事情
$("#fname").on("blur",function(){
isValid("please enter first name","fname","ferror")
});
看来你还可以做其他改进。对我来说最明显的是传递this.id
而不是编码id
$("#fname").on("blur",function(){
isValid("please enter first name", this.id, "ferror")
});
答案 1 :(得分:1)
您可以将arguments作为事件监听器的参数传递给事件处理程序:
$("#fname").on("blur", {
msg: "please enter first name",
name: "fname",
error: "ferror"
}, isValid);
然后你的isValid函数可以处理来自事件对象的数据:
function isValid (event) {
var errMessage = event.data.msg,
errId = event.data.name,
errClass = event.data.error;
if ($("#"+errId).val()=="") {
$("."+errClass).show();
$("."+errClass).html(errMessage);
return false;
} else {
$("."+errClass).hide();
}
}