【问题标题】:focus a form field on which the function has run (newbie)关注函数已运行的表单域(新手)
【发布时间】:2015-04-02 13:45:44
【问题描述】:

在触发该字段的“onblur”事件的表单字段上运行验证功能后,我试图将焦点放在表单字段上。如果它无效但似乎没有这样做,我想要做的是让焦点重新回到那个领域。我在网上寻找答案,但找不到解决方案。

HTML:

<input type="text" id="name" name="name" value="" onblur="validateName();"/>

JavaScript:

function validateName() {
        var name = document.getElementById("name");
          if (name.value==""||!isNaN(name.value)){
            alert("Please enter a valid name.  You have left the field blank or entered a number.");
            document.getElementById("name").focus();
          }

      };//END validateName

document.getElementById("name").focus(); 未按预期工作。

【问题讨论】:

  • “没有按预期工作。” 到底发生了什么?你有任何错误吗?
  • 你确定它不起作用吗?我只是在代码 sn-p 上尝试过,它可以工作
  • 你在那里使用了冗余事件,onblur 清除焦点,应该在submitkeyup 上调用验证函数
  • 如果该字段为空白或为数字,我希望 &lt;input id="name"&gt; 获得 focus();然而,即使"name" 没有通过验证(即它的""!isNaN),焦点也会转移到下一个字段。

标签: javascript


【解决方案1】:

代码对我有用,但为了让它更“干净”,我为你做了一些更改:

HTML: 您可以通过函数调用(this)“传递”元素,这样我们就不必再在函数本身中查找它了。

<input type="text" id="name" name="name" value="" onblur="validateName(this)"/>

JavaScript: 被模糊的元素,被传递并存储在element中,我们直接在其上调用“focus()”函数。

function validateName(element) {

      if (element.value==""||!isNaN(element.value)){
        alert("Please enter a valid name.  You have left the field blank or entered a number.");
        element.focus();
      }

  };//END validateName

【讨论】:

  • 感谢您提供更简洁的代码。但是,我的焦点没有回到id="name" 字段的问题没有解决。即使id="name" 上没有通过验证,焦点也会移动到下一个字段。
猜你喜欢
  • 2017-11-19
  • 2012-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多