我们在静态表单上有自动完成功能:
$(function() {
return $('#bom_part_name_autocomplete').autocomplete({
minLength: 1,
source: $('#bom_part_name_autocomplete').data('autocomplete-source'),
select: function(event, ui) {
$(this).val(ui.item.value);
},
});
});
上面的自动填充功能会在用户选择一个时填写部件名称。现在我们想为动态插入的元素添加自动完成功能。以下是我们需要考虑的一些事项:
'bom_123456789_part_name_autocomplete'
,
第二次插入的ID可以是'bom_123456987_part_name_autocomplete'
我们发现的在线示例都没有未知的元素ID。是否可以对ID未知的动态元素进行自动完成?如果可以做到,将非常感谢一个例子。
更新:这是创建元素的rails代码:
def link_to_add_fields(name, f, association)
new_object = f.object.class.reflect_on_association(association).klass.new
fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
render :partial => association.to_s, :locals => {:f => builder, :i_id => 0}
end
link_to_function(name, "add_fields(this, \"#{association}\", \"#{j fields}\")")
end
以下是add_fields()的javascript:
function add_fields(link, association, content) {
var new_id = new Date().getTime();
var regexp = new RegExp("new_" + association, "g");
$(link).parent().before(content.replace(regexp, new_id));
}
答案 0 :(得分:1)
好吧,插入元素后,你可以这样做:
$('[id^=bom_][id$=_part_name_autocomplete]').each(function(){
$(this).autocomplete({ // ...
})
通过
更容易将其添加到创作中答案 1 :(得分:1)
按ID引用元素不是选择它的唯一方法。
您可以在创建元素时添加自动填充:
function create_element(data) {
var field = $("<input/>")
field.data('autocomplete-source', data)
$(field).autocomplete({
minLength: 1,
source: $(field).data('autocomplete-source'),
select: function(event, ui) {
$(this).val(ui.item.value);
},
});
return field
}