evento onKeyUp JavaScript
-
28-09-2019 - |
Domanda
Ecco il mio codice:
function search_buddy()
{
$.post("num.php",function (ret){
num=ret;
});
$("#Layer7").html(num);
}
</script>
<div id="Layer8">
Find a buddy :
<input type="text" id="search" onkeyup="search_buddy()"/> :
</div>
Ora, quando entro un carattere nella casella di testo con id = cercare, la funzione search_buddy non sembra ottenere innescato. Considerando che, se entro due caratteri o più, la funzione lavora perfectly.Why sta succedendo questo?
Soluzione
miglior risorsa su eventi DOM: http://www.quirksmode.org/dom/ eventi / keys.html
Sembra che il tuo gestore di eventi fuochi "search_buddy" una richiesta AJAX, che è asincrona. Il resto delle piste funzione in parallelo con la richiesta AJAX, in modo da "numero" non è definito prima che i rendimenti $ .post.
// num is undefined here... unless your network has 0 latency
$("#Layer7").html(num);
È necessario racchiudere il codice (incollato sopra) in una funzione di callback. Sembra essere il parametro numero 3: http://api.jquery.com/jQuery.post/
Non testato, ma ipotesi migliore:
function search_buddy() {
$.post("num.php", function (ret) {
num=ret;
$("#Layer7").html(num);
});
}
Ecco alcune modifiche che aiuta a capire:
function search_buddy() {
alert("before the $.post execution");
$.post("num.php", function (ret) {
num=ret;
$("#Layer7").html(num);
alert("$.post callback");
});
alert("immediately after the $.post execution");
}
Nota:. "Segnalazione" si fermerà tutta l'elaborazione JavaScript in modo da essere in grado di vedere ciò che si verifica un evento quando