1

我在页面上有一个输入文本框和一个按钮。在文本框上有一个 onchange 事件,在按钮上有一个 onclick。每个事件触发一个完全独立的不相关方法。

问题如下:如果用户对文本框进行了更改,则立即单击按钮-触发了 onchange,但我失去了 onclick。我可以避免这种情况吗?我需要这两个事件发生。谢谢

更新:我在本地尝试了一个非常简单的测试:

<input type="text" onchange="alert1();"/>
<input type="button" onclick="alert2();"/>

js在哪里:

<script type="text/javascript">
function alert1()
{
alert("1");
}
function alert2()
{
alert("2");
}
</script>

更改文本并立即单击按钮只会触发第一个事件。有没有办法强制第二个事件发生?

4

2 回答 2

0

尝试这个,

function showAlert1() {
    setTimeout(function(){ alert("ONE") }, 250);
}

function showAlert2() {
    setTimeout(function(){ alert("TWO") }, 250);
}​

它缓冲每个函数的执行,以便可以触发按钮的 onclick。

于 2012-12-05T09:40:51.100 回答
0

一个alert(连同其他模态对话框)是一种特殊情况,因为它会暂停脚本其余部分的执行,直到用户单击“确定”。这就是为什么你的第二个处理程序从裂缝中掉下来的原因。

如果你document.write('foo')在你的处理程序中做了类似的事情,你就不会遇到这个问题。

于 2012-12-05T08:45:18.350 回答