2012-06-08 3 views

Répondre

6

Je mis en place la saisie semi-automatique avec un rappel « ouvert »:

jQuery('#people_new_user input[type="text"]').each(
    function(index, element) { 
     var field = element.name; 
     jQuery(element) 
      .autocomplete({ 
      source: "/cf/AutoComplete/People?current="+field, 
      open: openUser 
     }); 
    }); 

Et dans le rappel ouvert je regarde pour voir s'il n'y a qu'un seul résultat, et sélectionnez si elle est:

function openUser(event, ui) 
{ 
    // Try to select the first one if it's the only one 
    var $children = jQuery(this).data('autocomplete').menu.element.children(); 
    if ($children.size() == 1) 
    { 
    $children.children('a').mouseenter().click(); 
    } 
} 
+0

Pour quel signe '$' avant la variable 'children'? –

+1

@DmytroZarezenko C'est une convention de mettre un $ devant votre nom de variable s'il contient un objet jQuery. –

+1

J'ai obtenu ce '.data' est indéfini. –

0

Un grand merci pour cela, cela fonctionne bien pour nous. Au cas où cela aiderait quelqu'un, j'ai eu des problèmes avec le premier lors de son utilisation sous IE10. Il avait toujours bien fonctionné dans IE8, Chrome et Firefox.

Sous IE10 il a échoué sur la ligne jQuery(this).data('autocomplete').menu.element.children() avec: membres non trouvé

Ce avéré être simplement parce que la page Web avait: <meta http-equiv="X-UA-Compatible" content="IE=7"/> Retrait que ce soit réglé le problème (et il fonctionne toujours très bien dans IE8).

Mais avant de m'en rendre compte, j'ai passé beaucoup de temps à essayer de passer à jquery-1.11.1.min.js (à partir de 1.6.4) et à jquery-ui-1.11.0 (à partir de 1.8.16) .

Questions connexes