[英]onkeyup event JavaScript
这是我的代码:
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>
现在,当我在id = search的文本框中输入一个字符时,函数search_buddy似乎没有被触发。 而如果我输入两个或更多字符,则该功能运行正常。为什么会这样?
有关DOM事件的最佳资源: http : //www.quirksmode.org/dom/events/keys.html
看来您的事件处理程序“ search_buddy”触发了一个异步的AJAX请求。 该函数的其余部分与AJAX请求并行运行,因此在$ .post返回之前未定义“ num”。
// num is undefined here... unless your network has 0 latency
$("#Layer7").html(num);
您需要将此代码(上面已粘贴)包装在回调函数中。 它似乎是参数编号3: http : //api.jquery.com/jQuery.post/
未经测试,但最好的猜测:
function search_buddy() {
$.post("num.php", function (ret) {
num=ret;
$("#Layer7").html(num);
});
}
这里有一些修改可以帮助您理解:
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");
}
注意:“警报”将停止所有JavaScript处理,因此您将能够看到什么事件在何时发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.