0

我正在使用 Jquery 自动完成动态文本框。这工作正常,但不能使用动态元素。有什么建议么?

我的代码

   $('input#ISBN').each(function () {
        $(this).autocomplete({
            source: '/Cataloging/Bib/GetISBN',
            minLength: 1,
            maxRows: 5,
            select: function (event, ui) {

            }

        });
    });
4

2 回答 2

0

将元素添加到 DOM后,您需要调用代码。

当您使用 ID 选择器时,我的猜测是您仅将它用于一个元素,因此不需要循环。如果这是针对多个元素,请将您的 ID 更改为一个类,并将选择器更改为:

$('input.ISBN')

你的代码应该是这样的:

function autoComp(element){
  element.autocomplete({
            source: '/Cataloging/Bib/GetISBN',
            minLength: 1,
            maxRows: 5,
            select: function (event, ui) {

            }

  });
}

$(function(){
    $('input#ISBN').each(function () {
       autoComp($(this));
    });
});

然后无论您在哪里动态添加元素:

//Element added here
//e.g:
$(".foobar").append(newElement);

autoComp(newElement);
于 2012-11-20T09:59:38.190 回答
0

首先给你的元素相同的类而不是id,而不是添加动态控制之后你可以这样做

$('input.ISBN').not('.ui-autocomplete-input').each(function () {
        $(this).autocomplete({
            source: '/Cataloging/Bib/GetISBN',
            minLength: 1,
            maxRows: 5,
            select: function (event, ui) {

            }

        });
    });
于 2012-11-20T10:00:23.700 回答