如何模拟单击以使当前输入失去焦点的JavaScript

时间:2008-10-21 01:27:40

标签: javascript focus yui

我有一个输入,在某些点碰巧有焦点。如果用户单击页面的“背景”,则输入失去焦点。我试图用下面的代码模拟背景上的点击,但这不起作用(你会注意到输入仍然有焦点)。关于如何编写模拟点击页面“背景”的代码的任何建议?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/yahoo/yahoo-min.js" ></script>
        <script type="text/javascript" src="http://yui.yahooapis.com/2.6.0/build/event/event-min.js" ></script>
        <script type="text/javascript">
            YAHOO.util.Event.onDOMReady(function() {
                document.getElementById("input").focus();    
                document.getElementById("main").focus();    
            });
        </script>
    </head>
    <body>
        <div id="main">
            <form action="/">
                <p>
                    <input type="text" id="input"/>
                </p>
            </form>
        </div>
    </body>
</html>

3 个答案:

答案 0 :(得分:18)

我认为使用blur()可以解决问题:

<script type="text/javascript">
    YAHOO.util.Event.onDOMReady(function() {
        document.getElementById("input").focus();    
        document.getElementById("input").blur();    
    });
</script>

答案 1 :(得分:2)

尝试使用blur事件。如果你正在使用jQuery,你可以在DOM对象上调用一个方法来引发这个事件。 blur()方法也可以在没有jQuery的情况下工作。

http://docs.jquery.com/Events/blur

答案 2 :(得分:0)

您的想法是正确的,但是有一个小问题。

document.getElementById("main").focus();

<div id="main">

如代码中所示,实际上div HTMLElement没有焦点方法。

因此您可以调用其他具有focus方法的元素,或在输入元素上调用blur()