0

動的に生成された入力ボックスにオートコンプリートを追加したい。外部イベント(ボタンのクリックなど)から生成されたものでこれを行うことができます。ただし、必要な場合、入力ボックスは、オートコンプリートが関連付けられている前の入力ボックスの ONSELECT イベントで生成されています。

つまり、最初は自分のページに入力ボックス (オートコンプリート付き) があります。オプションが選択(ONSELECT)されると、別の入力ボックスが生成されます。問題 - 生成された入力ボックスには、オートコンプリートも関連付けられている必要があり、その ONSELECT イベントは別の入力ボックスを生成する必要があり、これは永久に続く必要があります。

私は主にこの背後にあるロジックが必要です。私は構文で大丈夫です。ループの問題にアプローチする方法がわかりません。

ここで同じことを行う必要がある他の質問を読みましたが、その場合、要素は外部で生成されています。本当に助けていただければ幸いです。前もって感謝します。


編集-私はここで新しいので、フォーマットされたコードを投稿する方法がわかりません-@ロブ---ありがとう。私はあなたの考えが好きでした。しかし、最後に .val('') を使用した理由がわかりませんでした。まあ、それはまだ機能していません。他の同様の方法も試しました(クローンを親要素(div#in)に追加するなど)。選択時にアラートが表示されます。これは、onselect イベントが発生していることを意味します。これがコードです -

$.post("returncategory.php",
       {},
            function(data)
            {
                $('.cat').autocomplete({
                    source: data,
                    type:'json', 
                    minchar: 1, 
                    fillin: false,
                    onSelect: function() {
                        //alert($(this).parent().get());
                        //$(this).clone(true, true).appendTo($(this).parent());
                        //$(this).clone(true, true).appendTo('#in');
                        $(this).clone(true, true).insertAfter($(this)).val();
                    }
                });


            },
            "JSON");

編集:修正されたコードフォーマット

編集:私は解決策を見つけました:)ロブさん、ご意見ありがとうございます!! これが私がしたことです-

$('.cat').live('click', function() {

                $(this).autocomplete({
                url: "returncategory.php",
                type: "json",
                minchar: 1,
                onSuggest: function() {

                },
                onSelect: function() {
                   $('#clicker').click();
                }
            });
            $(this).focus();
     });

$('#clicker').bind('click', function() {
   var newItem = $("<br><br><input class='cat' type='text'name='td_products["+1+"]'/>");
   $('#in').append(newItem);
   newItem.find('input').autocomplete({
                url: "returncategory.php",
                type: "json",
                minchar: 1,
                onSuggest: function() {

                },
                onSelect: function() {
                   $('#clicker').click();
                }
            });

});

PSとても嬉しいです。そして今、フォーマットされたコードをここに投稿する方法も知っています。ありがとう!

4

1 に答える 1

0

選択すると、現在の入力へのjQuery参照を取得してから実行する必要があります$this.clone(true, true).insertAfter($this).val('')

http://api.jquery.com/clone/

于 2011-08-24T18:36:27.027 に答える