我这里有一个有趣的问题。
我有一个文本区域,其中链接了一个 onchange 事件。
然后我有一个链接到 onclick 事件的按钮。
当在文本区域上触发 onchange 事件时,将处理放入文本区域的文本。当我单击文本区域之外的内容时,通常会发生这种情况。
我所做的如下:
- 我在文本区域中输入了文本。
- 输入后,我单击按钮以触发按钮上的 onclick 事件
- 什么也没发生,但是当我单击按钮时,文本区域上的 onchange 事件被触发,但按钮本身的 onclick 事件没有被触发。
为什么?我预计 onchange 和 onclick 都会被触发。有什么我需要做的,这样按钮上的点击就不会“丢失”。我意识到我必须单击两次,因为第一次单击会导致文本区域上的 onchange,然后第二次单击会触发按钮上的 onclick。
下面的代码显示了一个示例,只需尝试下面的代码即可。输入文本,然后直接单击该按钮。只有“textarea”弹出窗口会出现。
<textarea onchange="processText();" name="mytext"></textarea>
<button onclick="processButton();">Hello</button>
<script language="Javascript">
function processText()
{
alert( 'textarea');
}
function processButton()
{
alert( 'button');
}
</script>
您需要重新检查您的假设。在你的例子中,alert()中断程序流程,中断处理onclick。这段代码(jsfiddle在这里)表明onchange不干扰onclick默认情况下:
<textarea onchange="processText();" name="mytext"></textarea>
<button onclick="processButton();">Hello</button>
<div id="clicked"></div>
<div id="changed"></div>
<script language="Javascript">
function processText()
{
document.getElementById('changed').innerHTML = "onchange fired";;
}
function processButton()
{
document.getElementById('clicked').innerHTML = "onclick fired";
}
</script>
我也遇到了类似的问题,但实际原因是onclick未处理的事件是元素被单击,由于以下原因向下滚动onchange处理程序。当释放鼠标按钮时,该元素没有收到mouseup事件并且“点击”被中断。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)