在WordPress插件中使用jQuery自动完成

时间:2014-01-03 作者:danyo

我目前正在为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的输入上工作?

1 个回复
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”类。

结束

相关推荐

包含jQuery插件的最佳实践是什么

我正在将wordpress站点与另一个站点集成。集成包括一个由wordpress托管的表单,用户填写该表单并提交到其他站点。我正在使用一个自定义页面模板,其中包括几个jquery插件,用于表单验证等。目前,我直接链接到模板中的js文件,例如。<script src=\"/join/js/jquery.validate-1.11.1.min.js\"></script> 是否有一个建议的目录来存储这样的javascript文件?现在它们位于我在wordpress根目录中创建