我的变量看起来像这样:
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
,这样我就可以在函数中操作该元素。
答案 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)
});