ai didi

javascript - jQuery 自动完成仅为第一个动态插入的元素初始化

转载 作者:行者123 更新时间:2023-11-30 10:11:11 24 4
gpt4 key购买 nike

这是我们为动态插入的元素初始化自动完成 (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 View :

<%= 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  %>

最佳答案

setTimeout 在指定的延迟后调用该函数,它没有设置间隔,您可以使用 setInterval 函数,但在这种情况下这是一个糟糕的主意。无论何时生成它们,都应该选择目标生成的元素,然后在这些特定元素上调用该方法。没有可靠/好的方法来处理这个问题。

关于javascript - jQuery 自动完成仅为第一个动态插入的元素初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26568156/

24 4 0
文章推荐: javascript - 使用带有 IF 语句的 jQuery-ajax 响应
文章推荐: javascript - AngularJS 继承 - 覆盖 $scope.method()
文章推荐: javascript - 主干验证插件不验证
文章推荐: javascript - 限制 Sailsjs 中可接受的模型属性?
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com