65 votes

Lier de jQuery UI saisie semi-automatique à l’aide de .live()

J'ai cherché partout, mais je n'arrive pas à trouver l'aide...

J'ai quelques zones de texte qui sont créés dynamiquement via JS, donc j'ai besoin de lier l'ensemble de leurs classes à une saisie semi-automatique. En conséquence, j'ai besoin d'utiliser la nouvelle .vivre option ().

Par exemple, pour lier tous les éléments avec une classe de .foo maintenant et à l'avenir créés:

$('.foo').live('click', function(){
  alert('clicked');
});

Il faut (et se comporte) le même que .bind(). Cependant, je tiens à le lier à une saisie semi-automatique...

Cela ne fonctionne pas:

$('.foo').live('autocomplete', function(event, ui){
  source: 'url.php' // (surpressed other arguments)
});

Comment puis-je utiliser .live() pour lier la saisie semi-automatique?

Mise à JOUR

Compris avec l'Encadreur:

$(function(){
  $('.search').live('keyup.autocomplete', function(){
    $(this).autocomplete({
      source : 'url.php'
    });
  });
});

70voto

Dan Points 591

fonction de saisie semi-automatique jQuery UI ajoute automatiquement la classe « ui-saisie semi-automatique-input » à l’élément. Je recommanderais direct lie l’élément de mise au point sans la classe « ui-saisie semi-automatique-input » pour empêcher la reliure sur chaque événement keydown dans cet élément.

Edit

Ma réponse est maintenant périmé depuis jQuery 1.7, voir commentaire de la Nathan Strutz pour une utilisation avec le nouveau `` syntaxe.

18voto

Famver Tags Points 1094

Si vous utilisez le jquery.ui.autocomplete.js essayez plutôt ceci

 .bind("keydown.autocomplete") or .live("keydown.autocomplete")
 

sinon, utilisez les jquery.ui.autocomplete.js et voyez si ça va marcher

Si cela ne s'applique pas, je ne sais pas comment vous aider, mon frère.

9voto

karim79 Points 178055

Juste pour ajouter, vous pouvez utiliser le plugin .livequery pour cela:

 $('.foo').livequery(function() {

    // This will fire for each matched element.
    // It will also fire for any new elements added to the DOM.
    $(this).autocomplete(options);
});
 

8voto

Ollie P Points 575

Pour que l'auto-complétion fonctionne lorsqu'elle est chargée dynamiquement pour l'événement on() utilisé dans jQuery> 1.7, utilisez la syntaxe fournie par Nathan Strutz dans son commentaire:

 $(document).on('focus', '.my-field:not(.ui-autocomplete-input)', function (e) {
    $(this).autocomplete(options)
});
 

.my-field est un sélecteur pour votre élément d'entrée autocomplete.

5voto

Rehan Anis Points 59

.live () ne fonctionne pas avec le focus. De plus, keyup.autocmplete n'a aucun sens. Au lieu de cela, ce que j’ai essayé et que j’ai travaillé

  $(document).ready(function(){
$('.search').live('keyup' , function()
  { 
    $(this).autocomplete({ source : 'url.php' }); 
  });
})
 

Cela fonctionne parfaitement bien.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X