javascript - jquery 自动完成器不适用于动态添加的文本框

标签 javascript jquery

Here is a fiddle jquery ui 自动完成器正在处理第一个文本框的页面加载,但在添加更多具有相同类名的文本框后,自动完成器不起作用。

谁能帮帮我

$(document).ready(
    function(){
 var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp",
      "BASIC" 
    ];
         $( ".lang" ).autocomplete({
      source: availableTags
    });

        $('#addRow').click(
            function() {
                var curMaxInput = $('input:text').length;

                $('#rows li:first')
                    .clone()
                    .insertAfter($('#rows li:last'))
                    .find('input:text:eq(0)')
                    .attr({'id': 'ans' + (curMaxInput + 1),
                           'value': '',
                           'name': 'ans' + (curMaxInput + 1)
                          })
                    .parent()
                    .find('input:text:eq(1)')
                    .attr({
                        'id': 'ans' + (curMaxInput + 2),'value': '',
                        'name': 'ans' + (curMaxInput + 2)
                    });
                $('#removeRow')
                    .removeAttr('disabled');
                if ($('#rows li').length >= 5) {
                    $('#addRow')
                        .attr('disabled',true);
                }
                return false;
            });

        $('#removeRow').click(
            function() {
                if ($('#rows li').length > 1) {
                    $('#rows li:last')
                        .remove();
                }
                if ($('#rows li').length <= 1) {
                    $('#removeRow')
                        .attr('disabled', true);
                }
                else if ($('#rows li').length < 5) {
                    $('#addRow')
                        .removeAttr('disabled');

                }
                return false;
            });
    });

最佳答案

当您添加新的 .lang 元素时,您也不会将自动完成与其关联,因为绑定(bind)仅在文档准备就绪时完成。

所以我创建了一个像这样的函数,然后在文档就绪中调用,也在 $('#addRow').click 中调用:

function addAutocomplete() {
    var availableTags = [
        "ActionScript",
        "AppleScript",
        "Asp",
        "BASIC"];

    $(".lang").autocomplete({
        source: availableTags
    });
}
addAutocomplete();

我修改了你的代码并创建了这个 fiddle 。希望这会有所帮助。

关于javascript - jquery 自动完成器不适用于动态添加的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24101545/

相关文章:

javascript - HTML5 性能——将 <tr> 添加到表格的中间与表格的末尾

javascript - 在 Javascript 中反转数组的最有效方法是什么?

javascript - d3.js 数组问题 : Uncaught TypeError: Cannot read property 'date' of undefined

javascript - 如何使用 jQuery onepage-scroll 插件滚动大页面?

javascript - 为什么这个 javascript (jquery) 函数似乎运行不正常?

javascript - 如何使用 JSF 和 Javascript 在下拉选择时动态更新 Google 区域图表数据

javascript - 图像未动态显示

javascript - jQuery - 打开 div onLoad

javascript - 为拆分的单词添加效果

Javascript 获取范围内每个工作日的 MM/DD 值?