当单击 div(#CanvasArea) 时,我尝试显示文本框 (#dimVal)。我想让这个文本框在失去焦点时消失。
<head>
<script src="jquery-1.5.1.js" type="text/javascript"></script>
</head>
<body>
<div id = "CanvasArea", style = "width:50%; height:600px; border:2px; border-color:orange; border-style:solid; float:left">
<h3>Click Me</h3>
</div>
<input type="text", id="dimVal", value="111", style="position:absolute; display:none; left:300px; top:300px" />
<script type="text/javascript">
onMouseDown = function(e){
$("#dimVal").show();
$("#dimVal").focus();
$("#dimVal").focusout(onLostFocus);
}
onLostFocus = function(e){
$("#dimVal").hide();
$("#dimVal").unbind("focusout");
}
$("#CanvasArea").bind("mousedown", onMouseDown);
</script>
</body>
我想知道为什么“focusout”事件在鼠标单击后立即触发?
最佳答案
我无法让您的代码以当前形式工作,因此我使用 jQuery mouseup 函数和最新版本的 jQuery 重写了它:
$(document).ready(function() {
$("#CanvasArea").mouseup(function() {
$("#dimVal").show();
$("#dimVal").focus();
$("#dimVal").focusout(onLostFocus);
});
onLostFocus = function(e){
$("#dimVal").hide();
$("#dimVal").unbind("focusout");
}
});
这按预期工作,单击 Canvas 区域时显示,并在用户单击表单时移除焦点。
关于javascript - 意外的 "focusout"事件触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9019692/