1

我正在尝试为我网站的所有页面设置默认焦点,但不更改页面重新加载的焦点。

我是说:

  • 用户打开一个页面。
  • 焦点自动设置在第一个输入上。
  • 用户将焦点更改为第三个输入。
  • 用户刷新页面。
  • 焦点不得再次更改为第一个输入。(这是我未能完成的要求)。

我目前的代码如下:

$(document).ready(function() {

    if($(':focus').length === 0) {
        $(':input:not([type="hidden"]):first').focus();
    }

});

条件每次都是真的!

4

2 回答 2

2
$(document).ready({

window.onload=function(){
if(session.Storage.getItem("text3")){//if key= text3 is set,then change the focus to 3rd text box.
$('#your3rdTextID').focus();
}


$('#your3rdTextID').focus(function(){
    session.Storaage.setItem("text3","selected")//here you set the key as text3 and value as selected for later use.
});


});

您可以提供自己的自定义条件。这只是一个小例子。希望它对您有所帮助。祝您的项目好运。

LINK--> HTML5 本地存储与会话存储

链接--> http://www.w3schools.com/html/html5_webstorage.asp

于 2013-07-17T19:41:26.963 回答
2

这将起作用(在最新的 Chrome、IE7 和 IE10 中测试)。在焦点上设置一个 cookie,以记住最后一个焦点元素,如果没有,则默认为第一个。它依赖于jquery.cookie.js在这个 SO 答案中解释了用法)。这是一个最小工作示例的完整 HTML+JS 源代码。考虑更改 cookie 名称和输入选择器(目前'input'):

<!doctype html>
<html>
<head>
    <title>focus test</title>
    <meta charset="utf-8" />
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    <script type="text/javascript" src="jquery.cookie.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            var $input = $('input'), // get all the inputs
                cookieName = 'lastInputFocusIndex', // for consistency
                lastIndex = $.cookie(cookieName) || 0; // get the last known index, otherwise default to zero
            $input.on('focus',function(){ // when any of the selected inputs are focused
                if ( $(this).attr('type') !== 'submit' ) {
                    $.cookie(cookieName,$input.index(this)); // get their index in the $input list and store it
                }
            });
            $input.eq(lastIndex).focus(); // when the page loads, auto focus on the last known index (or the default of 0)
        });
    </script>
</head>
<body>

<form method="get" action="">
    <p><input type="text" name="first" /></p>
    <p><input type="text" name="second" /></p>
    <p><input type="text" name="third" /></p>
    <p><input type="submit" value="Go" /></p>
</form>

</body>
</html>

或者,您可以编写自己的原始 cookie,而不是使用 cookie helper jQuery 插件;我用它来简化事情。

于 2013-07-17T19:41:30.830 回答