如何防止javascript中的事件传播?

时间:2011-10-11 18:24:15

标签: javascript javascript-events

<script type="text/javascript">
function f1(a)
{
alert(a);
document.forms[0].elements[0].focus();
}
function f2(b)
{
alert(b);
document.forms[0].elements[1].focus();
}
</script>
<form name="myform">
<input type="text" name="box1" value="a" onblur=f1('a');  />
<input type="text" name="box2" value="b" onblur=f2('b');  />
</form>

onblur事件每次都会被触发并无限循环。所以e.stopPropagation()仍然是相同的。 我的目的是在用户导航到下一个表单元素时验证文本框。这使我在onblur()中调用该函数

2 个答案:

答案 0 :(得分:1)

当打开警报弹出窗口时,您必须单击它会导致您再次进入模糊状态的字段,从而再次调用您的某个功能(f1或f2),以及另一个警报弹出窗口出现。因此,这是一个无尽的循环。 stopPropagation对你没有帮助。建议:不要使用alert()

现在让我们假设你没有打电话给alert()。你仍然会遇到一个主要的可用性问题。在用户最初聚焦于任一文本字段之后,他们将永远无法输入其他文本字段或任何其他输入元素,因为初始字段将不断需要焦点。

答案 1 :(得分:-1)

您可以尝试对此进行故障排除,或者只使用业界公认的软件包,例如:jQuery。它可以帮助您处理各种事件传播并提供很好的示例。