2010-05-31 3 views
1

J'ai un widget jquery ui autocomplete dans un formulaire et je voudrais présélectionner sa valeur à partir d'une base de données. Mon autocomplétion fonctionne de la manière suivante: l'identifiant est un nombre, l'étiquette et la valeur sont les mêmes et sont une concaténation de id + "-" + description. Lorsqu'une valeur de la saisie semi-automatique est sélectionnée, la valeur d'un champ masqué est définie sur la valeur de id. Ensuite, la valeur du champ masqué est enregistrée dans la base de données lorsque le formulaire est soumis. Lorsque l'utilisateur revient sur la page pour l'éditer, je dois recharger la valeur à partir de la base de données: je redéfinis la valeur du champ idden et je voudrais précompiler la valeur du widget autocomplete avec la concaténation de id + "- "+ description prise de la db. Je pense que je devrais déclencher l'événement de sélection d'une ligne dans la saisie semi-automatique, mais je ne sais pas comment faire. As tu des idées? Merci Voici le code du autocomplete:comment précompiler un widget jquery ui autocomplete?

$('#codice_contratto').autocomplete({ 
    source: 'do_contratto.php', 
    select: function(event, ui) { 
       $('#id_contratto').val(ui.item.id); 
      } 
}); 

Répondre

0

Dans le code côté serveur qui retourne la page pour l'édition, je recommande la mise en juste valeur des deux la zone de texte saisie semi-automatique, ainsi que le caché champ à leurs valeurs correctes comme renvoyé par le serveur. Ce serait une solution côté serveur, et votre HTML pourrait ressembler à ceci:

<input type="textbox" id="condice_contratto" value="1 - the description" /> 
<input type="hidden" id="id_contratto" value="1" /> 

Le plug-in fonctionne grâce JQuery autocomplete lorsque la valeur de l'élément est prédéfini. Il n'y a pas vraiment de notion de «sélection» d'un élément en soi. Il monte juste au-dessus d'une zone de texte et définit sa valeur avec beaucoup d'interface utilisateur de fantaisie.

Si vous avez besoin d'une solution côté client, juste faire quelque chose comme ceci:

$(document).ready(function() { 
    $('#condice_contratto').val(current_id + ' - ' + current_description); 
    $('#id_contratto').val(current_id); 
} 

Cela suppose les variables current_id et current_description sont réglées sur leurs valeurs correctes.