我创建了一个简单的 Web 表单,其中包含一个文本框和一个按钮。我已经捕获了文本框的 onblur 事件。
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
<script language="javascript" type="text/javascript">
function onTextBoxBlur()
{
alert("On blur");
return true;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server" onblur="onTextBoxBlur();"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" />
</form>
</body>
</html>
当我在文本框中输入一些值并单击按钮时,文本框的 onblur 事件发生,但按钮的 onclick 事件不会发生。而且,当我从 js 函数中删除警报框时,它工作正常。按钮单击事件的一些方式丢失了。我认为这是由于警报框造成的。知道为什么会这样吗?
按钮的“单击”有两个部分:鼠标按下和鼠标松开。当您将鼠标放在按钮上时,它会获得焦点 - 模糊文本框并触发警报。由于警报对话框是模态的,它们会停止页面上的所有活动,因此按钮不会检测到鼠标松开,并且您的单击也不会完成。
可以使用模糊事件中的计时器来解决您的问题,并在按钮的 mousedown 事件中取消该计时器:
var timer;
function onTextBoxBlur()
{
timer = window.setTimeout(function () { alert("On blur"); }, 0);
return true;
}
function onButtonMouseDown()
{
clearTimeout(timer);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)