jQuery自动完成结果不断吐出错误

时间:2009-11-05 07:25:36

标签: jquery autocomplete

自昨天以来,我一直在努力解决这个问题,但我无法弄清楚为什么我一直收到错误消息“......不是一个功能”。这是HTML代码

<td>
<input class="itemAC" name="Item[0][name]" id="Item_0_name" type="text" value="" />
<input class="itemId" name="TransactionDetail[0][itemId]" id="TransactionDetail_0_itemId" type="hidden" value="" />
</td>

JS代码:

$(".itemAC").autocomplete("/inventory2/index.php?r=item/AjaxLookup",{
'minChars':2,'delay':500,'matchCase':false,'max':10}
).result(function(event,item){alert(this.next().id)}
);

我得到“this.next不是函数”错误,我尝试了$(this).next,$(“#”+ this.id).next并且我得到了相同的错误消息,我在做什么错?

编辑: 好的,所以我试图删除几乎所有的HTML和JS代码,以便HTML正文包含:           

2 个答案:

答案 0 :(得分:0)

应该是$(this)而不是this

使用this时,它引用DOM对象,而使用$(this)引用具有next()方法的jQuery对象。由于您尝试使用DOM对象,因此不知道该方法是什么。

答案 1 :(得分:0)

我不认为这是一个范围问题,更多的是JQuery使用问题。 this确实引用了Dom对象,并且不允许您使用next(),但是当正确使用$(this).next()时,要访问目标对象的id属性,您需要使用正确的jquery语法:$(this).next().attr("id"));

这应该适合你:

$(".itemAC").autocomplete("/inventory2/index.php?r=item/AjaxLookup",{
'minChars':2,'delay':500,'matchCase':false,'max':10}
).result(function(event,item){alert($(this).next().attr("id"))}
);

如果您要设置第二个输入的值,请使用.val()方法来完成此操作。