0

嗨只是想知道这是否是正确的方法。我知道我们可以使用对象表示法传递数据并使用它。但只是想知道下面的代码是否正确。我不确定以下语法。

 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/

所以只想弄清楚传递参数是否直接有效。

4

2 回答 2

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")
});
于 2013-05-28T12:41:19.727 回答
1

您可以将参数作为事件侦听器的参数传递给事件处理程序:

$("#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();
    }
}
于 2013-05-28T12:44:58.507 回答