Javascript:将函数参数与字符串组合以引用var

时间:2013-05-08 14:47:28

标签: javascript jquery function

我的变量看起来像这样:

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值来访问直接cardholder var。但我也想使用field值然后引用cardholderInfo,这样我就可以在函数中操作该元素。

4 个答案:

答案 0 :(得分:3)

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

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

修改你的函数以获取第二个参数:

function validateRequired(field, fieldInfo){
    /* validation stuff */
}

答案 1 :(得分: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"));
  });
});

答案 2 :(得分:1)

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

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

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

function validateRequired(field, fieldInfo){
    …

答案 3 :(得分:1)

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

cardholder.keyup(function(){
    validateRequired(cardholder)
});