将属性添加到(输入)字段,以便下次通过cookie加载

时间:2013-04-26 14:01:44

标签: javascript cookies

我有一个包含几个输入字段的网页。我想要做的是,如果我这次选择了一个字段,那么网页应该在下次加载时自动关注同一个字段。

我可以想象饼干是要走的路。我不明白的是我应该如何通过cookie向特定的输入字段添加属性,例如“自动对焦”。

任何帮助都会很棒。 TIA, NIKHIL

2 个答案:

答案 0 :(得分:1)

您可以在cookie中存储输入字段的名称(或id),然后在<head>中覆盖函数setFocusOnLoad()以将焦点设置在所需元素上。为了在cookie中存储最新的输入字段,每次用户选择不同的输入字段时,您可能必须在cookie中设置值。

以下是如何将焦点设置在特定元素上的示例:http://www.w3schools.com/js/tryit.asp?filename=tryjs_focus

答案 1 :(得分:0)

基于@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过期,以保持流量只有一种方式。

尼基尔