1

Web アプリケーション用の jQuery UI オートコンプリート プラグインを使用しています。
既存の行では問題なく動作しますが、動的に追加された行ではうまくいきません。

これが私のjqueryコードです。

$(function ()
{
    var tab = $("#tabs-6");
tab.find("input[name='newContactName']").autocomplete(
{
        source: function(request, response) {
            var cachedRequest = $(this).data("cachedRequest");
            // Previous data is cached, so new data is a subset of this
            if (cachedRequest != null && 
                    cachedRequest.length > 0 && 
                    request.term.indexOf(cachedRequest) >= 0)
            {
                ..some code..
            }
            else
            {
                var input = $(this);
                $.ajax({
                    ..some code..
                    success: function(data) 
                    {..some code..
                    }

                }); 

            }
        },
        minLength: 3,
        delay: 500
    }
);

tab.find("input[name='newContactName']").bind('autocompleteselect', function(event, ui) {
    $(this).prev("input[name='newContactId']").val(ui.item.person_id);
    }); 

/* Customizing the autocomplete suggestions box that pops up.
*/
var input1=$("input[name='newContactName']"); 
input1.each(function (){
$(this).autocomplete("widget").css("height", "10em");
$(this).autocomplete("widget").css("overflow", "auto"); 
$(this).autocomplete("widget").css("width", "210px");
});

});

これは、既存の行のオートコンプリート プラグインの jQuery コードです。新しく追加された行の場合、これは挿入しようとしている html です。

var html = '<tr>..first 8 td elements.. <td><input type="text" name="newContactName"> </td>'+
        ..some more td elements</tr>';

var newRow = $(html).insertAfter(row); // insert content,where row is my current row
newRow.find("td:nth-child(9) input[name='newContact']").autocomplete();

新しく追加した行に対してもオートコンプリート機能が機能することを確認するにはどうすればよいですか?

4

1 に答える 1

1

間違っている可能性があることがいくつかあります。

最初に、新しい行を追加するときに入力の名前を「newContactName」に設定しますが、find() で「name='newContact'」を探します。

また、find() の結果に対して autocomplete() を呼び出す場合は、source オプションを指定する必要があります。非動的行の関数に設定されたソースがあるため、おそらくそれを名前付き関数に分割し、名前付き関数を両方の autocomplete() 呼び出しでソースとして使用することをお勧めします。

お役に立てれば...

于 2010-08-28T20:39:49.090 に答える