javascript - 意外的 "focusout"事件触发

标签 javascript jquery

当单击 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/

相关文章:

javascript - 用于输入中文(ibus)的 JQuery/DOM 事件?

javascript - 无法在 IE 中选择、复制、删除或编辑文本区域中的文本

python - 带有 Redis 的 Django websockets

javascript - 如何消除错误: "Implied eval is evil"

javascript - 为什么当我声明类字段时 jshint 会抛出错误?

javascript - 更改已应用样式的 html 表格行颜色

javascript - html页面中元素的z-index定位问题

javascript - YouTube Javascript API 在 iPad iOS8 上无法按预期工作

javascript - 如何使用 Google Maps API 获取所选地点的 "latitude and longitude"?

php - 使用 PHP 处理可扩展表单的可能方法有哪些?