Pourquoi la saisie semi-automatique JQuery ne s'exécute-t-elle pas?
-
03-07-2019 - |
Question
J'ai un cas très intéressant où le champ de saisie semi-automatique JQuery ne répond pas la première fois que je tape dans la zone de texte, mais lorsque je la place en dehors de la zone de texte et que le curseur revient à la seconde fois, il commence à répondre. et les résultats sont affichés lorsque je commence à taper.
Quand j'utilise firebug, je peux réellement voir que la fonction AJAX de mon application a été appelée et que les résultats sont renvoyés au modèle HTML, mais que les résultats ne sont pas affichés. Qu'est-ce qui peut provoquer ce comportement?
Code de liaison de ma fonction:
$(function()
{
$(document).ready(function(){
$("#tags1").bind("keyup",autoFill)
});
});
Ma fonction de saisie semi-automatique
function autoFill(){
$("#tags1").autocomplete("/taglookup/", {
width: 320,
max: 4,
highlight: false,
multiple: true,
multipleSeparator:",",
scroll: true,
scrollHeight: 300,
delay: 10
});
}
Mon champ TextBox:
<input type="text" style="width: 400px" id="tags1" name="tags1" value="">
La solution
Pourquoi faites-vous l'appel autocomplete () sur Keyup? Je pense que cela pourrait causer vos problèmes. J'essaierais d'appeler autocomplete () directement à partir de l'événement document ready.
$(document).ready(function(){
$("#tags1").autocomplete("/taglookup/", {
width: 320,
max: 4,
highlight: false,
multiple: true,
multipleSeparator:",",
scroll: true,
scrollHeight: 300,
delay: 10
});
});
Autres conseils
Si vous utilisez le même système de saisie semi-automatique que celui que j’utilisais aujourd’hui (sur un autre ordinateur, désolé - impossible de savoir quelle était la version exacte) - vous n’avez pas besoin de vous lier sous keyup - vous ne liez qu’une seule fois au démarrage -
<script>
$('#tags1').autocomplete(....);
</script>
La fonction de saisie semi-automatique gère toutes les pressions sur les touches / modifications de la mise au point, etc.