0

これが私のコードです:

$authorizedRow = $('.authorizedRows').html()

$("#name").autocomplete({
        source: "userlookup.cfm",
        minLength: 3,
        select: function(e, ui) {
            $('#email').last().attr('value',ui.item.mail).attr('disabled','disabled');
            $('#phone').last().attr('value',ui.item.phone).attr('disabled','disabled');
            $('.authorizedRows').last().append('<button class="deleteRow">x</button>');
            $('.deleteRow').button();
            $('#people').append('<div class="authorizedRows">' + $authorizedRow + '</div>').autocomplete( "option", "appendTo", "#name");
        },
        change: function(e, ui) {
            if (a) {
                //not used yet
            }
        }
    });

したがって、私がやろうとしているのは、入力フィールドでこのオートコンプリートを使用することです。ユーザーが選択すると、他の 2 つのフィールドがオートフィルされます。これら 3 つのフィールド (名前、電話番号、電子メール) はすべて、authorizedRows div に含まれています。「最後の」authorizedRows divの最後にボタンを追加し、「people」divの最後にまったく新しいauthorizedRows divを追加します。

私の問題は、新しい行が追加された後です。オートコンプリートは、新しい行の新しい名前フィールドでは機能しません。これは、イベント リスナーがまだ DOM 要素にアタッチされていないためです。

ご覧のとおり、 people div セレクターで .autocomplete('option') を使用してこれを解決しようとしました。うまくいきませんでした。動的に作成されたフィールドでオートコンプリートを機能させる方法はありますか? ありがとう。

4

1 に答える 1

0

IDの代わりにクラスセレクターを使用して解決しました。

編集:

ID の jQuery セレクターは、複数ある場合は最初の 1 つだけを返します。そのため、動的に作成された他のフィールドにイベントが関連付けられませんでした。クラスの jQuery セレクターは、セレクターに一致するすべてのクラスの配列を返します。

于 2012-09-20T12:03:40.623 に答える