Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:将函数参数与字符串组合以引用变量_Javascript_Jquery_Function - Fatal编程技术网

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

Javascript:将函数参数与字符串组合以引用变量,javascript,jquery,function,Javascript,Jquery,Function,我有这样的VAR: 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("(Req

我有这样的VAR:

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;
    }
}
还有一个当前不起作用的函数,如下所示:

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(function () {
    validateRequired(this, cardholderInfo);
});
function validateRequired(field, fieldInfo){
    /* validation stuff */
}
并修改函数以获取第二个参数:

cardholder.keyup(function () {
    validateRequired(this, cardholderInfo);
});
function validateRequired(field, fieldInfo){
    /* validation stuff */
}
要绑定的函数!如果每次调用时都需要向其传递参数,则需要使用或函数表达式:

cardholder.keyup(functio(e) {
    return validateRequired(cardholder, cardholderInfo);
});
此外,您还需要validateRequired函数中的第二个参数来填充fieldInfo变量:

function validateRequired(field, fieldInfo){
    …

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

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

不需要全局变量:

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"));
  });
});

使用两个参数并传入CardingInfo,或者使用javascripts词法作用域并仅在函数中使用CardingInfo,如果函数定义在与CardingInfo相同的作用域中,或者定义在从CardingInfo开始的作用域链的下一个作用域中。让我们直截了当地说:您需要什么?我认为有一种更简单的方法可以让你尝试…@pythonian29033请不要提醒,学习如何使用控制台,并使用Chrome中的console.logfield和Firefox中的firebug记录对象。你可以点击记录的对象来检查它的属性。在我看来,console.dir适合Firefox。好孩子!废话为什么我没有看到?这个在keyup中不是jquery对象,所以尝试在上面执行.val会破坏代码。@HMR,你是对的,知道了这一点,验证函数必须将其转换为jquery对象,如果它想使用.val,可能还有$field。我的答案是展示如何将值传递给函数,而不是实际执行验证。这是一个很好的答案,只是提醒OP它将破坏validateRequired函数,除非调用类似的函数:validateRequired$this,CardingInfo;在validate函数中编辑代码,这比问题中的代码更麻烦谢谢,没有看到field和fieldinfo之间的区别。更改了代码