【发布时间】:2014-10-25 23:04:10
【问题描述】:
这是我们为动态插入的元素初始化自动完成(jQuery)的方式:
$(function() {
setTimeout(function(){
$("[id^='requisition_material_items_attributes_'][id$='_item_name_autocomplete']").each(function (){
$(this).autocomplete({
minLength: 1,
source: $(this).data('autocomplete-source'),
select: function(event, ui) {
$(this).val(ui.item.value);
}
});
});
}, 5000);
});
这里setTimeout(5 秒延迟)允许对第一个动态插入的元素进行自动完成初始化。但是,初始化不适用于第二个插入的元素,并且自动完成不适用于第二个元素。如何修复上面的 JS 代码以使其适用于第二个元素及其他元素?
更新
jQuery autocomplete for dynamically created inputs(所谓的重复案例)提供的解决方案在这里不起作用,因为它是针对不同的问题。在重复的情况下,通过在使用 JavaScript 生成新元素时添加自动完成的初始化来解决问题。在我们的例子中,新元素是由 Rails 生成的,并且在生成时不能使用自动完成初始化代码插入其中。在我们的例子中,自动完成适用于第一个插入的元素,而不适用于第二个元素。我们的问题是对第二个元素进行自动完成初始化。
更新
item_name_autocomplete 的 Rails 视图:
<%= f.input :item_name_autocomplete, :label => t("Item Name"), :input_html => { data: {autocomplete_source: SUBURI + base_materialx.autocomplete_parts_path}},:placeholder => t("Enter Part Name Keyword"), :required => true %>
【问题讨论】:
-
我们应该为新插入的元素绑定自动完成
-
请提供更多上下文。如何使用 Rails 生成元素?你在使用 AJAX 吗?你能提供一个重现问题的非工作演示吗?
-
@user938363 能否请您提供示例代码链接。
-
@@chanchal,我们没有在线代码。 html源代码会有帮助吗?
标签: javascript jquery ruby-on-rails-3 autocomplete