2011-07-12 8 views
17

Dinamik olarak oluşturulmuş form giriş öğelerini tetiklemek için jQueryUI AutoComplete'ı kullanmaya çalışıyorum, ancak çalışmıyor. KeyUp.autocomplete ve keydown.autocomplete öğelerini $ .live() işlevine bağlama olarak denedim, ancak yeni öğelere bağlanıyor - yalnızca sayfada zaten var.Dinamik olarak oluşturulmuş bir öğeye jquery ui autocomplete nasıl ekleyebilirim?

here kodunu deneyin (ilk girdide "ava" yazmayı deneyin, sonra "Giriş Ekle" yi tıklayın ve yeni girdiye de aynı yazın).

JavaScript:

$(function() { 
    $("input#addButton").click(function() { 
     $("input.searchInput:last").clone(true).appendTo($(this).closest("form")); 
     $("input.searchInput:last").val(""); 

    }) 

    $("input.searchInput").live("keydown.autocomplete", function() { 
     $(this).autocomplete({ 
      source: [ 
       "ActionScript", 
       "AppleScript", 
       "Asp", 
       "BASIC", 
       "C", 
       "C++", 
       "Clojure", 
       "COBOL", 
       "ColdFusion", 
       "Erlang", 
       "Fortran", 
       "Groovy", 
       "Haskell", 
       "Java", 
       "JavaScript", 
       "Lisp", 
       "Perl", 
       "PHP", 
       "Python", 
       "Ruby", 
       "Scala", 
       "Scheme" 
       ], 

      minLength: 2 
     }); 
    }) 
}); 

HTML:

<form name="myForm" method="post"> 
    <input id="addButton" name="addButton" type="button" value="Add an input" /> 
    <input name="search" value="" class="searchInput" maxlength="20" /> 
</form> 
+0

Sadece meraktan dışarı, bir denetim oluşturulan belirli nesne için oluşturulan bağlama her zaman yürütme denediniz mi? Sorun giderme için iyi bir başlangıç ​​noktası ... – Dutchie432

+0

@ Dutchie432: evet, yaptım - http://jsfiddle.net/6t74T/2/ - aynı sonuç. –

+1

@Eric: Kemanınız (jsfiddle.net/6t74T/1) Chrome'da benim için çalışıyor. Eklenen kutuda otomatik tamamladım. – Mrchief

cevap

31

Fonksiyon .live() depr olduğu şimdi eklenmiş.

bu işleri gibi kod benziyor:

var options = { 
    source: ["ActionScript", "AppleScript"], 
    minLength: 2 
}; 
var selector = 'input.searchInput'; 
$(document).on('keydown.autocomplete', selector, function() { 
    $(this).autocomplete(options); 
}); 
+0

yeni sürümlerle uyumlu. –

+0

Bunun için teşekkürler! Sadece otomatik tamamlama çalışma almaya çalışan Rails 3.2 yuvalanmış bir form alanları sorunu bana yardımcı oldu! –

+0

Hello @Andrei, http://stackoverflow.com/questions/33410824/autocomplete-in-jquery-with-dynamically-added-elements adresinden de bakabilirsiniz. Teşekkürler – Jaikrat

11

Bu çalışır:

$(function() { 
 
    var options = { 
 
    source: [ 
 
     "ActionScript", 
 
     "AppleScript", 
 
     "Asp", 
 
     "BASIC", 
 
     "C", 
 
     "C++", 
 
     "Clojure", 
 
     "COBOL", 
 
     "ColdFusion", 
 
     "Erlang", 
 
     "Fortran", 
 
     "Groovy", 
 
     "Haskell", 
 
     "Java", 
 
     "JavaScript", 
 
     "Lisp", 
 
     "Perl", 
 
     "PHP", 
 
     "Python", 
 
     "Ruby", 
 
     "Scala", 
 
     "Scheme" 
 
    ], 
 
    minLength: 2 
 
    }; 
 

 
    $("input.searchInput").live("keydown.autocomplete", function() { 
 
    $(this).autocomplete(options); 
 
    }); 
 

 
    var addInput = function() { 
 
    var inputHTML = " <input name='search' value='' class='searchInput' maxlength='20' />"; 
 
    $(inputHTML).appendTo("form#myForm"); 
 
    $("input.searchInput:last").focus(); 
 
    }; 
 

 
    if (!$("form#myForm").find("input.searchInput").length) { 
 
    addInput(); 
 
    } 
 

 
    $("input#addButton").click(addInput); 
 
});
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
 
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/jquery-ui.min.js"></script> 
 
<form id="myForm" name="myForm" method="post"> 
 
    <input id="addButton" name="addButton" type="button" value="Add an input" /> 
 
</form>

+0

Hello @Eric, http://stackoverflow.com/questions/33410824/autocomplete-in-jquery-with-dynamically-added-elements adresinden de bakabilirsiniz. Teşekkürler – Jaikrat

+0

Bu sorulara bir çözüm var mı? Http://stackoverflow.com/questions/38693916/how-to-use-jquery-autocomplete-in-a-dynamic-form –