0

我有看起来像这样的变量:

var cardholder = $("#cardholder");
var cardholderInfo = $("#cardholder-Info");

还有一个看起来像这样的函数(目前不工作):

function validateRequired(field){
    //if it's NOT valid
    if(field.val().length < 1){
        field.addClass("field_error");
        fieldInfo.text("(Required)");
        fieldInfo.addClass("error");

        return false;
    }
    //if it's valid
    else{
        field.removeClass("field_error");
        fieldInfo.text("");
        fieldInfo.removeClass("error");
        return true;
    }
}

我喜欢访问:

cardholder.keyup(validateRequired(cardholder));

我到处寻找,但找不到我需要的东西,我不确定我应该寻找什么。

我可以使用该field值来访问直接cardholdervar。但我也想使用该field值来引用cardholderInfo,以便我可以在函数中操作该元素。

4

4 回答 4

3

你可以像这样调用函数,传递第二个参数:

cardholder.keyup(function () {
    validateRequired(this, cardholderInfo);
});

并修改您的函数以采用第二个参数:

function validateRequired(field, fieldInfo){
    /* validation stuff */
}
于 2013-05-08T14:51:04.510 回答
2

不需要全局变量:

function validateRequired($cardInfo){
    // You can guess what $cardInfo is
    //if it's NOT valid
    if(this.val().length < 1){
        this.addClass("field_error");
        $cardInfo.text("(Required)");
        $cardInfo.addClass("error");

        return false;
    }
    //if it's valid
    else{
        this.removeClass("field_error");
        $cardInfo.text("");
        $cardInfo.removeClass("error");
        return true;
    }
}


$(document).ready(function(){
  $("#cardholder").keyup(function(){
     validateRequired.call($(this),$("#cardholder-Info"));
  });
});
于 2013-05-08T14:56:12.623 回答
1

不要调用你要绑定的函数!如果每次调用时都需要向它传递参数,则需要使用bind或函数表达式:

cardholder.keyup(functio(e) {
    return validateRequired(cardholder, cardholderInfo);
});

此外,您还需要在validateRequired函数中添加第二个参数来fieldInfo填充变量:

function validateRequired(field, fieldInfo){
    …
于 2013-05-08T14:52:12.323 回答
1

你必须在 keyup 中传递函数的引用,你不必调用函数

cardholder.keyup(function(){
    validateRequired(cardholder)
});
于 2013-05-08T14:52:47.740 回答