这将起作用(在最新的 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 插件;我用它来简化事情。