我目前正在为wordpress开发一个插件,并使用jquery autocomplete。在我的插件文件中,我可以这样自动完成:
wp_enqueue_script(\'jquery-ui-autocomplete\');
然后我将脚本分配给如下输入id:
jQuery("#post_email_repeatable").autocomplete({
source:"get_posts.php",
minLength:1
})
这对于一个输入来说效果很好。然而,我使用的是可重复/可重用的输入字段(它们可以动态创建)。他们都有相同的id
#post_email_repeatable
.
自动完成仅对id为的第一个输入有效#post_email_repeatable
.
我的问题是,是否可以让auto complete在多个具有相同id的输入上工作?
SO网友:mneil
Auto complete很可能无法处理额外字段,因为这些字段是用javascript动态添加的,并且是在您生成javascript时添加的。autocomplete()调用,它在页面加载时运行。您动态创建的字段还不存在,还没有与它们挂钩的自动完成功能。试试这个。
jQuery(document).on("keydown", ".post_email_repeatable", function(){
jQuery(this).autocomplete({
source: "get_posts.php",
minLength: 1
});
});
这会在输入字段的自动完成函数上发生keydown事件时将其与该类绑定。因此,即使在新动态创建的字段上发生keydown事件,它也会触发。
正如Milo所评论的,您应该使用一个类,因为ID应该是唯一的,但是没有唯一的ID不应该破坏它的功能。我仍然建议您在每个可重复字段中添加一个“post\\u email\\u repeatable”类。