我正在尝试遍历输入框列表,以便在输入更改时激活JQuery自动完成功能。以下是相关代码:
for(i=0;i<30;i++)
{
$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i));
};
但是我收到了这个错误:
TypeError: ($("#_Q6_Q" + i) + "_Q3_C").value is not a function.
我不知道如何解决这个问题。
编辑1:我将$添加到函数参数中,但尚未解决问题(之前就已存在)。
做一些挖掘导致我尝试从.value()中删除()。该函数现在通过而没有错误。但它也没有做任何事情。代码现在看起来像这样:
for(i=0;i<30;i++)
{
$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i));
};
答案 0 :(得分:2)
我想你可能意味着:
$(("#_Q6_Q" + i) + "_Q3_C")
所以它是
$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i));
答案 1 :(得分:2)
我认为你缺少你的jQuery函数调用者($
)。此外,如果您获得jQuery集合的值,则方法为val()
- value
是DOM元素的属性:
$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").val(), i));
^
just here
获取DOM元素的值可以这样完成:
$("#_Q6_Q" + i + "_Q3_C").change(transportChange($("#_Q6_Q" + i +"_Q3_C").get(0).value, i));
又一个编辑
我刚刚意识到,你需要在change()
方法中使用匿名函数:
$("#_Q6_Q" + i + "_Q3_C").change(function(){
transportChange($("#_Q6_Q" + i +"_Q3_C").val(), i)
});
否则在附加事件时调用该函数,而不是在触发事件时调用。祝你好运。
答案 2 :(得分:2)
("#_Q6_Q" + i)
是 String ,因此(("#_Q6_Q" + i) + "_Q3_C")
是 String ,因此此代码正在尝试访问'string'.value
未定义,因此您尝试执行undefined()
会导致错误。
也许您打算先将字符串传递给jQuery
。
答案 3 :(得分:2)
您没有调用任何功能。如果 .value()应该来自transportChange,那么您必须将括号更改为以下内容:
transportChange("#_Q6_Q" + i +"_Q3_C").value()
或者你可能只是缺少$ function(jquery),所以也许你应该把代码变成这个:
transportChange($("#_Q6_Q" + i +"_Q3_C").value(), i)
我们无法完全理解您的代码。
答案 4 :(得分:2)
value
是 DOM 元素的属性 - 您正在使用jQuery对象,因此您可能正在寻找的函数是:$('#id').val()
- 或者您可以参考直接使用:$('#id')[0].value