【问题标题】:Add jquery autocomplete on ready to multiple text inputs在准备好多个文本输入时添加 jquery 自动完成功能
【发布时间】:2010-05-10 22:12:45
【问题描述】:

我在循环中向多个文本输入添加自动完成插件时遇到问题(不返回错误)。

// get text inputs to attach autocomplete    
var locinputs = $('#localizations').find('input:text');

// iterate over elements and add autocomplete plugin
        for (var i = 0; i < locinputs.length; i++) {
           // asp.mvc array with special characters replacing 
            var locNameField = locinputs[i].name.replace('[', '\\\\[');
            locNameField = locNameField.replace(']', '\\\\]');
            locNameField = locNameField.replace('.', '\\\\.');

            $('input#' + locNameField).autocomplete('<%=Url.Action("GetCity", "Localization") %>', {
                extraParams: {
                    provinceId: function () { return 21; }
                },
                dataType: 'json',
                parse: function (data) {
                    var rows = new Array();
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = { data: data[i], value: data[i].PlaceId, result: data[i].Name };
                    }
                    return rows;
                },
                formatItem: function (row, i, n) {
                    return row.Name;
                },
                width: 300,
                mustMatch: true,
                multiple: true
            });
        }

加载没有错误,我尝试使用Firebug调试,jquery选择器可以访问元素

<input type="text" name="loc[0].CityNames" id="loc[0].CityNames" value="" />

更正声明 $('#localizations input:text').each(function () {

            $(this).autocomplete('<%=Url.Action("GetCity", "Localization") %>', {
                extraParams: {
                    provinceId: function () { return 21; }
                },
                dataType: 'json',
                parse: function (data) {
                    var rows = new Array();
                    for (var i = 0; i < data.length; i++) {
                        rows[i] = { data: data[i], value: data[i].PlaceId, result: data[i].Name };
                    }
                    return rows;
                },
                formatItem: function (row, i, n) {
                    return row.Name;
                },
                width: 300,
                mustMatch: true,
                multiple: true
            });
        });

【问题讨论】:

    标签: jquery asp.net-mvc autocomplete loops


    【解决方案1】:

    尝试使用 jQuery each 而不是使用 for 循环。

    $('#localizations input:text').each(function() {
        // Your code goes here.
    });
    

    还要确保选择器正常工作。在 firebug 中调试并检查 $('#localizations').find('input:text') 表达式或只是提醒它的大小。

    【讨论】:

    • 我将代码移动到每个 jquery 语句中,但 id 不起作用。但是当我尝试访问元素 $("input#loc\\[0\\]\\.CityNames");它是可访问的(从萤火虫)。
    • 尝试将警报放入 each:它调用的次数是否正确?还有一件事:在每个函数中,“this”都将引用 DOM 元素。因此,要使用当前元素进行操作,请尝试使用 $(this).attr("name") 等。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-07
    • 2011-09-27
    • 1970-01-01
    • 2012-05-20
    • 2011-11-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多