【问题标题】:Javascript focus event goes to next form fieldJavascript 焦点事件转到下一个表单字段
【发布时间】:2013-09-19 07:42:03
【问题描述】:

我对 Javascript 相当陌生,并且有一个基本问题。我有一个带有 first_name 和 last_name 输入字段的 HTML 表单。我在标题中有以下 Javascript 代码,但代码运行后,焦点转到下一个字段(last_name)。为什么会这样,我该如何纠正?

谢谢。

<script>
        function validateForm()
        {
            valid = true;

            //validate first name
            if (document.contactform.first_name.value == "")
            {
                //alert user first name is blank
                alert("You must enter a first name");
                document.getElementById("first_name").focus();
                return false;
            }
            return valid;
        }
    </script>   

并且表单域代码是: input type="text" name="first_name" id="first_name" maxlength="50" size="30" onBlur="validateForm()"

【问题讨论】:

    标签: forms focus


    【解决方案1】:

    解决这个问题的方法是稍微延迟......像这样:

    setTimeout(function() {
        document.getElementById('first_name').focus()
    }, 10);
    

    这是您在 jsfiddle 中进行此修复的示例:http://jsfiddle.net/FgHrg/1/

    这似乎是一个常见的 Firefox 问题.. 我不知道确切原因,但它与 Firefox 在 DOM 完全加载之前加载 javascript 有关.. 换句话说 getElementById('first_name') 返回 null。但是添加轻微的延迟可以解决这个问题。

    【讨论】:

    • 谢谢。我看到代码是如何工作的,但是有没有一种通用的方法可以将用户返回到调用该函数的字段?似乎如果有 8 个或 10 个字段并且您正在验证每个字段,这将是冗余代码。谢谢。
    • 不幸的是,我还没有找到任何其他解决方法。但我确实发现 setTimout 实际上可以设置为 0,而不是 10(因为它在上面的代码中)并且它仍然有效。你也可以看看这个:stackoverflow.com/questions/7046798/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 2014-10-27
    相关资源
    最近更新 更多