JQuery - 将 Enter KeyPress 事件附加到列表项
我正在用 jquery 编写我自己的自动完成插件。列表项是根据 json 响应动态绘制的。我有向上/向下箭头键代码,可以很好地处理输入字段上触发的 keyup 事件。
我想为每个列表项添加一个回车键事件。因此,当用户使用向上/向下箭头键浏览自动完成下拉列表时,回车键按下事件会将该列表项的值添加到输入字段。
有人可以帮忙吗?我尝试将事件绑定到列表项
if (e.keyCode == 40){
// highlight the list item
$("li").bind("keyup",function(e){
if (e.keyCode == 13){
// add value of list item to input field
}
});
}
I'm writing my own autocomplete plugin with jquery. The list items are drawn dynamically based on a json response. I have up/down arrow key code that works well on keyup event fired on the input field.
I want to add an enter key event to every list item. So, when the user is navigating through the autocomplete dropdown using the up/down arrow keys, an enter key press event would add the value of that list item to the input field.
Can someone please help? I've tried binding event to the list item
if (e.keyCode == 40){
// highlight the list item
$("li").bind("keyup",function(e){
if (e.keyCode == 13){
// add value of list item to input field
}
});
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您不能只使用绑定,因为在评估 javascript 时列表项不在 DOM 中。
考虑使用 jQuery.live() http://api.jquery.com/live/
如果您有
那么您可以调用实时事件,如下所示:
You can't use just bind, because the list items aren't in the DOM when that javascript is evaluated.
Look into using jQuery.live() http://api.jquery.com/live/
If you have
<div id='autocomplete'><li>...</li></div>
then you could call the live event like:像这样的事情:
要在这里扩展您的评论,请使用 jfiddle http://jsfiddle.net/csLVX/5/< /a>: {稍微整理一下我的代码!}
Something like this:
To expand on your comment here is a jfiddle http://jsfiddle.net/csLVX/5/: {tidying up my code a bit!}
您可能希望使用
live()
而不是bind()
,这样即使您的li
是动态加载的,它也能正常工作。文档在这里
我还会向
li
' 添加一个特定的类因此您可以使用如下选择器:You probably want to use
live()
rather thanbind()
so that it works even when yourli
's are dynamically loaded.The docs are here
I would also add a specific class to the
li
's so you can use a selector like: