我有一个场景,我有一个容器控件(基本上是一个ASP.Net用户控件),它有几个子控件。我希望控件共同确定丢失的焦点事件。例如,我希望父控件告诉我它只有当任何一个子控件获得焦点时才有焦点,它应该告诉我,如果所有子控件都失去了焦点,它就会失去焦点。
作为模拟参考下面的代码。如果您运行此示例,您会注意到当您单击蓝色矩形时,它会显示蓝色聚焦,然后如果您单击红色,则会显示蓝色模糊,红色聚焦。我需要的是当我点击它们中的任何一个时,它应该告诉我Red Focused,当我点击外面它应该点击Red Blur。
有人可以帮助我吗?
由于
<head runat="server">
<title>Untitled Page</title>
<script type="text/javascript" language="javascript">
function RedFocus() { alert('RedFocus'); }
function BlueFocus() { alert('BlueFocus'); }
function GreenFocus() { alert('GreenFocus'); }
function RedBlur() { alert('RedBlur'); }
function BlueBlur() { alert('BlueBlur'); }
function GreenBlur() { alert('GreenBlur'); }
</script>
</head>
<body>
<div onblur="RedBlur()" onfocus="RedFocus()"
style="background-color: Red; width: 400px; height: 400px;">
<div onblur="BlueBlur()" onfocus="BlueFocus()"
style="background-color: Blue; width: 200px; height: 200px; margin: 50px">
<div onblur="GreenBlur()" onfocus="GreenFocus()"
style="background-color: Green; width: 100px; height: 100px; margin: 25px">
</div>
</div>
</div>
</body>
</html>
答案 0 :(得分:2)
由于事件不是您喜欢的顺序,为什么不使用简单的计时器和全局变量?
parentfocus;
function greenBlur()
{
parentfocus = setTimeout(parentHasBlured,50);
}
function blueFocus()
{
clearTimeout(parentfocus);
}
function parentHasBlured()
{
//Logic here
}
由于事件如此紧密,50ms的延迟应该足以完成这个伎俩(不太可能做到这一点)