Javascript 停止重复执行事件

Javascript 停止重复执行事件,javascript,Javascript,所以我有两个文本元素A和B,在这两个对象的onblur事件中,我有相同的验证函数,如果B(日期字段)错误,它将弹出一条消息。现在,如果我更改A,然后选择B,它将运行函数两次。它似乎为A和B的onblur运行了一次。这会导致用户两次收到相同的错误消息 我需要做什么来强制A的onblur不允许启动任何其他事件 这是我编的exmaple代码。如果您位于第二个字段,并尝试转到第一个字段,则If将运行该函数两次 function myVal(){ if (document.getElementBy

所以我有两个文本元素A和B,在这两个对象的onblur事件中,我有相同的验证函数,如果B(日期字段)错误,它将弹出一条消息。现在,如果我更改A,然后选择B,它将运行函数两次。它似乎为A和B的onblur运行了一次。这会导致用户两次收到相同的错误消息

我需要做什么来强制A的onblur不允许启动任何其他事件

这是我编的exmaple代码。如果您位于第二个字段,并尝试转到第一个字段,则If将运行该函数两次

function myVal(){
    if (document.getElementById("B").value == 'Z') {
        alert('Bad Value');
        document.getElementById("B").focus();
    }
}



如果没有
警报()
调用,是否会发生同样的情况
alert()
窃取焦点,导致先前聚焦的内容模糊。

该函数不会运行两次,但通过在第二个字段上设置焦点,可以强制用户永远停留在那里,或者直到他键入正确的值。。i、 e.您将用户作为人质


尝试删除或注释
.focus()
行,看看它是否有用。

考虑以下解决方案:

现场演示:

另一件事,这种专注()的事情是不可取的(至少我是这样认为的)。红色信息应该足够了:

更好的现场演示:

您甚至可以对每个输入框keyup事件运行验证代码。这将使错误消息更具响应性:


甚至更好的现场演示:

你真的需要发布代码,或者发布一个复制问题的简化示例。我必须检查,但我需要警报来通知我的用户。只是在没有警报的情况下尝试了它(我创建了第三个文本字段,在其中我向其值添加了1),但它仍然运行了两次。@Limey,你能用其他方法提供反馈吗?字段附近有某种内联通知吗?我刚刚发现这是我测试中的问题。有没有办法强迫他们留在对象上,直到正确填充对象,而不在对象出错时运行两次验证?@Limey使用jQuery和Šime Vidas代码是一种方法,尽管我个人建议只在表单提交时运行验证,然后才设置焦点。该函数确实运行两次。每当他们试图将消息留给另一个具有相同验证的字段时,您会收到两次消息。我真的很喜欢第一个链接。它简单而干净,并一直保持在那里,直到他们有它的权利。谢谢
<form>
    <input name="A" value="A" onblur="myVal();"/>
    <input name="B" value="Z" onblur="myVal();"/>
</form>