如何在onblur事件中验证文本框?

3
我页面上有两个文本框,我想在onblur事件中验证这些文本框。但是onblur事件会持续执行这两个文本框,
请查看以下代码 -

function validate(c) {
  if (c.value == '') {
    alert(c.id + " is empty.");
    c.select();
    return false;
  }
}
<body>
  <form id="form1" runat="server">
    <div>
      <input type="text" id="Text1" onblur="return validate(this)" />
      <input type="text" id="Text2" onblur="return validate(this)" />

    </div>
  </form>
</body>

请告诉我,如何解决这个问题?
提前感谢。

1
你的意思是模糊事件正在为每个文本输入不断运行? - Matthew Brown
2
如果您通过选择第二个输入来取消选择第一个输入,并且根据您的函数,第一个输入无效,则会进入“无限模糊循环”,因为当其无效时,input1再次获得焦点,从而在input2上引发模糊事件,然后input1再次失焦。这将一直重复下去。 - Mic1780
@Mic1780,那听起来很合理,但我无法在Firefox 42.0或Chrome 46.0.2490.86(64位)上重复这种行为。我错过了什么吗? - deamentiaemundi
好的,当您在1中单击并在2中单击时确实会发生这种情况,但在示例中,“alert()”实际上正在解决问题:D - CoderPi
看起来我错了。对于错误的信息我很抱歉。这是我的测试结果:https://jsfiddle.net/zrkz752p/ - Mic1780
显示剩余2条评论
1个回答

0

使用 document.activeElement 可以检查新聚焦的元素是什么。

因此,您可以执行以下操作:

function validate(c) {
    // Ignore when switching between these Inputs
    if (document.activeElement == document.getElementById("Text1")) return
    if (document.activeElement == document.getElementById("Text2")) return
    //...

...花了我一些时间才找到解决方案,但现在它在这里了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接