Autocomplétion

Fermé
jordxn - 9 févr. 2014 à 16:06
 jordxn - 10 févr. 2014 à 12:35
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...


<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

BlackYoup Messages postés 181 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 10 juin 2014 20
Modifié par BlackYoup le 9/02/2014 à 19:38
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 :



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
0
Merci et donc pour vérifié que ce champs rentré par l'utilisateur est bon, je dois faire une requete et vérifié avec la base de donnée ?

Merci
0
BlackYoup Messages postés 181 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 10 juin 2014 20
9 févr. 2014 à 20:21
Tout dépend de ce que tu veux auto-completer. Dans le cas de noms d'utilisateurs par exemple, oui, il te faudra faire un appel AJAX au serveur qui lui regardera dans la BDD quels résultats sont possibles ;)
0
Merci de votre réponse .

Par contre j'aimerais faire un nouveau systeme d'autocomplétion, en fonction du code postal, changer la ville..
J'ai suivi des tutos mais je bloque .
(J'ai la base de donné avec les infos)
0
BlackYoup Messages postés 181 Date d'inscription mardi 4 décembre 2012 Statut Membre Dernière intervention 10 juin 2014 20
9 févr. 2014 à 22:51
Ou bloques tu ?
0
Je ne sais pas par quoi commencé...
0