0

オートコンプリートのあるフィールドを追加できるフォームがあります。
作成時に各フィールドにオートコンプリートを追加する代わりに、イベントバインディングを使用してオートコンプリートを追加することはできますか?
Javascriptのイベントに関しては、私は初めてです。
これは、イベントバインディングを使用して、新しい行を追加するために行ったことです(完全に機能します)。

$(function() {
    $('input[name=addItem]')
        .bind('click', function() {
            var line = $('#list > div').size()+1;
            divId = 'line-'+line;
            var divCloned = $('#line-1').clone();
            divCloned.attr('id', divId);
            $('#list').append(divCloned);
            var inputs = $(divCloned).children('input').get();
            for (var i in inputs) {
                inputs[i].value='';
                inputs[i].id = inputs[i].id.replace(/\d+/, line);
                inputs[i].name = inputs[i].name.replace(/\d+/, line);
            }
            this.blur();
        });
}); 
4

2 に答える 2

0

オプション 1:元のオートコンプリートをコピーする

.clone()以下を使用して、イベント ハンドラーを含むを作成でき.clone(true)ます。

var divCloned = $('#line-1').clone(true);

これには のオートコンプリートが含まれている必要があるため#line-1、コード内の対応する行を上記の行に置き換えることで、すべての設定が完了します。



オプション 2:さまざまなオプションで新しいオートコンプリートを作成する

オートコンプリート機能を変更したい場合は、再度設定できます。

var divCloned = $('#line-1').clone(); // <== Don't copy the event handlers.

// ... do things, set variables, append divCloned, whatever

  // Now set the autocomplete with different options from the original
divCloned.autocomplete({ ... });
于 2010-09-27T03:47:50.833 に答える
0

私があなたの質問を正しく理解できれば、オートコンプリートをすべての入力フィールドに適用したいですか? セレクターを一般化することでこれを行うことができるため、イベントを$('input[name=addItem]')(意味: 属性「name」が「additem」に設定されたタイプ「input」のすべてのタグ) に追加する代わりに、たとえば$('input[type=text]')、イベントをにバインドする which を使用できます。属性「type」が「text」に設定されたすべての入力タグ。

アプリケーションによっては、どの入力フィールドがクリックされたかに基づいて提案されたオートコンプリートを変更しますか? それには、イベント ハンドラーにさらにロジックが必要です。

于 2010-09-27T03:08:05.070 に答える