2013-04-26 39 views
-1

我有一個帶有幾個輸入字段的網頁。我想要做的是,如果我這次選擇了其中一個域,那麼網頁應該在下次加載時自動關注相同的內容。將屬性添加到(輸入)字段,以便下次通過Cookie加載

我可以想象餅乾是要走的路。我不明白的是,我應該如何通過cookie向特定輸入字段添加屬性,例如「自動對焦」。

任何幫助將是偉大的。 TIA, 尼基爾

回答

1

您可以在輸入字段的名稱(或ID)存儲在cookie,則在<head>,重寫功能setFocusOnLoad()將焦點設置所需的元件上。爲了將最新的輸入字段存儲在cookie中,每次用戶選擇不同的輸入字段時,您可能必須在cookie中設置值。

下面是如何將焦點設置特定元素的例子:http://www.w3schools.com/js/tryit.asp?filename=tryjs_focus

0

基於由@Nathan華萊士給出的主意,我解決我自己的問題以不同的方式。

首先,我注入一個javascript通過

$(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) 
    } 
}); 

我可以寫功能writeCookie(在問題補充輸入字段到一個文件中的cookie)本身上面的if語句裏面,但我喜歡保持不同事情分開。否則,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過期,以保持流量只有一種方式。

Nikhil

相關問題