如何使 Javascript focus() 方法在输入文本框的 onBlur 事件中工作?

新手上路,请多包涵

对我来说,Javascript focus() 如果我将它与按钮和 onClick 事件一起使用,方法工作正常,但是对于 onBlur 来自文本框,它不起作用。任何人都可以指导我吗?

 <html>
<head>
<script type="text/javascript">
function displayResult()
{
var inp1=document.getElementById("text1").value;
var inp2=inp1.length;
if(inp2==0)
{
alert("Field 1 cannot be left Empty");
//document.getElementById("text1").value="";
document.getElementById("text1").focus();
}
}
</script>
</head>
<body>
<input type="text" name="text1" id="text1" onBlur="displayResult();"/>
<input type="text" name="yext2" id="text2" />

</body>
</html>

原文由 Tasneem Fathima 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 292
2 个回答

自您发布问题以来,我使用不同的技术对您的问题进行了一个小时的试验。现在在我看来,通过输入事件,您无法将焦点放在自身上。

不过,还有另一种可能的解决方法。您可以在提交表单时调用 displayResult() ,检查 text1 是否为空,如果为空则取消提交并将焦点放在 text1 我已经为你重写了代码。

 <html>
<head>
<script type="text/javascript">
function displayResult()
{
var inp1=document.getElementById("text1").value;
var inp2=inp1.length;
if(inp2==0)
{
alert("Field 1 cannot be left Empty");
document.getElementById("text1").focus();
return false;
}
}
</script>
</head>
<body>
<form onsubmit="return displayResult();">
<input type="text" name="text1" id="text1" />
<input type="text" name="yext2" id="text2" />
<input type="submit"  />
</form>

</body>
</html>

希望有帮助…

祝你平安 …

原文由 Tabrez Ahmed 发布,翻译遵循 CC BY-SA 3.0 许可协议

当元素的 模糊 事件触发时,不可能将焦点重新应用到元素。使用间隔值为 0 的计时器将对焦点的调用延迟到之后:

 function displayResult() {
    var inp1 = document.getElementById("text1").value,
        inp2 = inp1.length;

    if(inp2==0) {
        alert("Field 1 cannot be left Empty");
        //document.getElementById("text1").value="";

        window.setTimeout(function () {
            document.getElementById("text1").focus();
        }, 0);
    }
}

原文由 Andy E 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题