Autocomplétion
jordxn
-
jordxn -
jordxn -
Bonjour,
J'ai réalisé un champs d'autocomplétion mais j'ai un petit soucis,
Quand je clique pour sélectionner mon choix proposé dans la liste, la valeur se met bien dans le champ input mais une fois que je clique ailleurs , la valeur disparait...
Merci
J'ai réalisé un champs d'autocomplétion mais j'ai un petit soucis,
Quand je clique pour sélectionner mon choix proposé dans la liste, la valeur se met bien dans le champ input mais une fois que je clique ailleurs , la valeur disparait...
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) { // si le champs txte est vide
$('#suggestions').hide(); // on cache les suggestions
} else { // sinon
$.post("ajax.php", {queryString: ""+inputString+""}, function(data){ // on envoit la valeur du champ texte dans la variable post queryString au fichier ajax.php
if(data.length >0) {
$('#suggestions').show(); // si il y a un retour, on affiche la liste
$('#autoSuggestionsList').html(data); // et on remplit la liste des données
}
});
}
}
function fill(thisValue) { // remplir le champ texte si une suggestion est cliquée
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
$(document).ready( function () {
$("input#inputString").keyup( function() { // si on presse une touche du clavier en étant dans le champ texte qui a pour id inputString
lookup($(this).val())
});
$("input#inputString").blur( function() { // si le champs texte perd le focus
fill()
});
});
</script>
Merci
2 réponses
Salut,
Pour moi c'est logique que la valeur disparaisse vu que tu appelle fill() lors de l'onBlur() mais comme aucun paramètre n'est passé, jQuery fait à sa sauce et remplit le champs par du vide (en gros)
Pourquoi pas un truc du style :
et du coup le onBlur :
Même si le mieux serait de ne pas appeler fill() dans le onBlur si c'est pour faire ca
Pour moi c'est logique que la valeur disparaisse vu que tu appelle fill() lors de l'onBlur() mais comme aucun paramètre n'est passé, jQuery fait à sa sauce et remplit le champs par du vide (en gros)
Pourquoi pas un truc du style :
function fill(thisValue) { // remplir le champ texte si une suggestion est cliquée
if(thisValue){
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}
}
et du coup le onBlur :
$("input#inputString").blur( function() { // si le champs texte perd le focus
fill(false);
});
Même si le mieux serait de ne pas appeler fill() dans le onBlur si c'est pour faire ca