Javascript .focus()无效

时间:2014-10-17 03:48:47

标签: javascript

我无法使javascript .focus()函数正常工作。在这一点上,我真的不确定为什么它没有执行。它可能与onload有关吗?

这是我的代码:

var request_brochure = function()

{
    var name = $("name").value;
    var email = $("email").value;
    var isValid = true;

    if(name == "")
    {
        $("name").focus();
        alert("Please fill in your name.");
        $("name").focus();
        isValid = false;
    }
    else if(email == "")
    {
        window.setTimeout(function(){$("email").focus();}, 100);

        alert("Please fill in your email. ");
        window.setTimeout(function(){$("email").focus();}, 100);
        isValid = false;
    }

    if(isValid)
    {
        $("form_b").submit();
        //$("brochure").innerHTML = "Request Submitted";
    }
}

window.onload = function () {   
    $("name").focus();
    $("submit1").onclick = request_brochure;

}
var $ = function (id) {
    return document.getElementById(id);
}

感谢任何帮助

1 个答案:

答案 0 :(得分:2)

我怀疑事件没有正确绑定。 window.onload无法确保加载标识为submit_1的元素。尝试直接将事件添加到按钮:

<input id="submit_1" onclick="request_brochure()" />

如果有效,那么问题就在于此。如果没有jQuery,你可以通过将$("submit1").onclick = request_brochure;放在页面末尾的<script>中来实现绑定事件,但结果将从浏览器混合到浏览器。我真的建议使用jQuery(function () { $("submit1").onclick = request_brochure; }),并确定何时将页面完全加载到库中,因为它已经过多年的尝试和测试,并且失败的可能性要小得多。本土方法。

关于你的问题的评论有很多道理,我不想看到你走上jQuery的高级别的道路,旨在让非程序员和程序员能够获得很少的javascript知识和#39;更容易。话虽如此,浏览器的景观非常丛林,世界上超过一半的人都使用IE 8或更低版本(到目前为止,我可能错了,但我确定它仍然相当可观),jQuery的低级内容(如$.ajax$(function () {})和嘶嘶声选择引擎)在我看来是不可或缺的。这些实用程序(jQuery的低级功能)的主要目的是解决浏览器碎片问题并使开发人员更容易实现。知道底层代码很好,但我会在心跳中采用$ .ajax而不是HttpXmlRequest的任何实现(我还记得IE6的activeX组件的日子......那些是黑暗的次)。如果没有先学习$('#some-form-field').val(),就不要document.getElementById('some-form-field').value而你应该没问题。)