2012-11-15 27 views
0

如果任何人都可以提供幫助,將不勝感激!以Javascript動作傳遞變量

我有一個HTML表單,一個下拉爲你所在的國家。

然後,我有一個JavaScript函數,確定狀態回升,以及用戶相應地重定向。

function pickstate() 
{ 
     if(document.drop_list.State.value == "AR"){ 
      document.drop_list.action = "www.theurl.com"; 
      document.drop_list.submit(); 
     } 
} 

我的問題是:我可以用這個方法(如果有的話,如何)的狀態傳遞到下一個形式,這樣當用戶被重定向,下拉說狀態他們選擇。

我知道如何做到這一點使用PHP和POST,但這不是發佈,它只是一個重定向到基於狀態的正確的URL,並且因爲20個左右的狀態將使用相同的形式,所以我不想要讓用戶再次選擇他們的狀態。

我使用這種方法的原因並不是每個人都會被重定向 - 很多狀態會留在首先顯示的窗體上。這就是爲什麼我不能使用POST。

幫助!謝謝。

+3

選中狀態,如果這是一個GET形式,爲什麼內不只是從第二頁上的查詢字符串中獲取參數? –

+2

(那些不*重定向的可以從同一頁面檢索變量。) –

+0

表單必須發佈(在json中),但是此重定向在提交之前。 – user1789437

回答

0

您可以將該值存儲在本地存儲中。

function pickState() { 
    if (document.drop_list.State.value == "AR") { 
     document.drop_list.action = "www.theurl.com"; 
     localStorage.setItem('selectedState', 'AR'); 
     document.drop_list.submit(); 
    } 
} 

然後添加另一個設置值的函數。

function setState() { 
    var storedSelectedState = localStorage.getItem('selectedState'); 

    if (storedSelectedState) { 
     document.drop_list.State.value = storedSelectedState; 
    } 
} 
+0

輕微的矯枉過正,不是嗎,只是爲了在表單之間傳遞一個值? –

+0

矯枉過正?大概。昂貴?一點也不。 –

+1

當然,只是賭用戶沒有IE <8;) –

1

您可以哈希添加到URL

function pickstate() 
{ 
    var stateVal = document.drop_list.State.value; 
    switch(stateVal) { 
     case "AR" 
     document.drop_list.action = "www.theurl.com/#"+stateVal; 
     break; 
     case "IT" 
     document.drop_list.action = "www.theurl.com/#"+stateVal; 
     break; 
    } 

    document.drop_list.submit(); 
} 

那麼接下來的形式可以通過使用經過哈希

window.location.hash; // eg. will be equal to #AR or #IT