我正在尝试自动完成功能,当我在文本框中键入内容时,我会遇到问题,我希望它会点击$('.autoclass').autocomplete({ //mycode
,但它不会点击。
我的观点:
<input type="text" class="autoclass" data-bind="value:$root.email" /> // This hits --(1)
<div class="form-body" data-bind="foreach:dataArray">
<input type="text" class="autoclass" data-bind="value:$root.email" /> //This wont --(2)
</div>
然后我认为有些事情错了..!使用我的代码,即在类.autoclass
上尝试了更改事件,但同样的结果令人遗憾但有趣的是在这里我尝试在foreach
之外放置相同的文本框,其中两者(自动完成和更改事件)它的工作方式就像一个文本框里面的文本框循环有同样的问题它甚至没有击中
更改活动:
$('input.autoclass').change(function () {
//my code
});
据我所知,控制台没有错误。 以前我使用Knockout自动完成功能,这在我的情况下是无效的(我需要在我进入时每次碰到控制器时都获得更新的列表,比如jquery自动完成)。
是否有任何黑客在jquery中为动态创建的元素(具有相同类的文本框)工作
{EDIT}
经过建议我尝试了JqAuto插件,该插件工作正常,但这里的小问题。
示例小提琴here演示了问题
当我从textbox-1中选择自动填充数据时,所选值将绑定到textbox-2,反之亦然。好吧,因为我在root
的视图中使用value
,它倾向于像我猜的那样绑定(两者都是可观察的)。任何替代方法,使这个工作。
道歉,如果有什么不清楚的地方,如果有任何其他信息,请告诉我。
答案 0 :(得分:1)
问题是,当您使用jQuery附加事件处理程序时,它仅适用于当前存在的元素。它不会将事件处理程序应用于稍后创建的元素,这可能是您的输入由敲除控制的情况。
一个解决方案是跟踪添加元素的时间并将事件处理程序附加到它们,然后使用event delegation更简单,将事件处理程序附加到某些父元素,即#39;动态添加和删除。例如:
$(document).on("change", "input.autoclass", function() {
});
document
可以更改为不会从文档中动态添加和删除的输入的任何父级。