我有一个带有几个输入字段的网页。我想要做的是,如果我这次选择了其中一个字段,则网页应该自动聚焦在下一次加载时。
我可以想象饼干是要走的路。我不明白的是我应该如何通过cookie向特定输入字段添加属性,例如“自动对焦”。
任何帮助都会很棒。TIA,尼基尔
我有一个带有几个输入字段的网页。我想要做的是,如果我这次选择了其中一个字段,则网页应该自动聚焦在下一次加载时。
我可以想象饼干是要走的路。我不明白的是我应该如何通过cookie向特定输入字段添加属性,例如“自动对焦”。
任何帮助都会很棒。TIA,尼基尔
您可以将输入字段的名称(或 ID)存储在 cookie 中,然后在 中<head>
,覆盖该函数setFocusOnLoad()
以将焦点设置在所需元素上。为了在 cookie 中存储最近的输入字段,您可能必须在每次用户选择不同的输入字段时在 cookie 中设置值。
以下是如何将焦点设置在特定元素上的示例:http ://www.w3schools.com/js/tryit.asp?filename=tryjs_focus
基于@Nathan Wallace 给出的想法,我以不同的方式解决了我自己的问题。
首先,我注入了一个 javascript 来将有问题的输入字段添加到文档 cookie 中
$(this).click(function(event) {
if($(event.target).is(":input")){
event.preventDefault();
document.location = "this-clicked:"+window.location;
// this is the function which writes the cookie
writeCookie(event)
}
});
我本可以在上面的 if 语句中编写函数 writeCookie(),但我喜欢将不同的东西分开。否则writeCookie函数如下
function writeCookie(event) {
var expirationTime = new Date();
expirationTime.setTime(expirationTime.getTime() + EXPTIME);
document.cookie="focusOnMe=" +
escape(event.target.id) +
"; expires="+expirationTime.toGMTString();
}
这就是本次会议的全部内容。现在,每次加载页面时,我都会检查 cookie 是否存在
function readElementFromCookie() {
var allcookies = document.cookie;
// Get all the cookies pairs in an array
cookiearray = allcookies.split(';');
// Now take key value pair out of this array
for(var i=0; i<cookiearray.length; i++){
name = cookiearray[i].split('=')[0];
value = cookiearray[i].split('=')[1];
if (name == "focusOnMe") {
return value;
}
}
}
如果这个函数返回一个非空值,那么我通过
ELEM = readElementFromCookie();
if (ELEM) {
javascript: document.getElementById("ELEM").focus();
}
当然,同样的,我可以强制使之前设置的 cookie 过期,以保持流只有一种方式。
尼基尔