2015-11-19 83 views
0

當前正在工作的會話存儲,其中用戶必須從第一頁中選擇一個單選按鈕,然後單擊下一個按鈕div必須顯示在第一頁的第二頁我已創建一個函數與設置對象的數據將被存儲在第二個使用設置項目的對象集我試圖讓這些值使用獲取項目。JavaScript條件會話存儲不能按預期工作

我有兩種情況

  1. 當從第一無線電設備組,並且如果像阿蘭任何位置的用戶選擇PG單選按鈕/阿布扎比如果用戶選擇阿蘭·| abudhabi從位置,然後用戶選擇DIP EDU,如果用戶單擊提交按鈕,然後在第二頁我需要一個複選框,並創建應用程序按鈕,其餘的應該隱藏 - 與我的代碼這是工作
  2. 如果從第一無線電組,如果像阿蘭/阿布扎比任何位置的用戶選擇微克單選按鈕,如果用戶點擊,然後提交的第二頁,我需要得到的只是一個支付按鈕按鈕,但這是不太友好的工作幫助我

這裏是我的plunker link就像小提琴

這就是我對從第一頁

function storedata(){ 
    var storeDate = {}; 
    storeDate['storedValue1'] = $('input[id=pg]:checked').val(); 
    storeDate['storedValue2'] = $('#alain').prop('checked'),$('#abudhabi').prop('checked'); 
    storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching"); 

    sessionStorage.setItem('storeDate', JSON.stringify(storeDate)); 

} 

function storedata1(){ 
    var storeDate1 = {}; 
    storeDate1['storedValuej'] = $('#slt_mjr option:selected').val("Bachelor of Arts in Persian").text(); 
    sessionStorage.setItem('storeDate1', JSON.stringify(storeDate1)); 
    console.log(storeDate1); 

} 

,當我檢查會話存儲我收到storedValue2假

enter image description here

提供後或在此獲得該項目的代碼線

storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked'); 

我在storedValue2 =真正得到真實的,但如預期我的輸出是行不通的

enter image description here

在第二頁

var otherObj = JSON.parse(sessionStorage.getItem('storeDate')); 
var otherObj1 = JSON.parse(sessionStorage.getItem('storeDate1')); 
if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 != "pg") { 
    $(".pay_check,.pay_click").show(); 
    $(".pay_trans").hide(); 
} else if (otherObj1.storedValuej === "BAP") { 
    $('.create_btn,.no_applica').show(); 
    $('.pay_btn').hide(); 
} else { * * // I have tried using like this but no use** 
    //$('.create_btn,.no_applica,.pay_click').hide(); 
    $('.pay_btn').show(); 
} 

任何建議傢伙問題

請請指導我哪裏做錯了。在此先感謝

+0

[這裏](http://jsfiddle.net/1qmcqaso/9/)您的特殊要求的代碼:) – PDKnight

+0

@PDKnight太感謝你了,你徹底震撼了:) – Mahadevan

回答

1

好了,你有一些問題在這裏。主要是由於對功能的誤解。

首先,我們可以改變

storeDate['storedValue1'] = $('input[id=pg]:checked').val(); 
// to 
storeDate['storedValue1'] = $('#pg').val(); 

的jQuery提供的$函數選擇基於給定的選擇器要素。所以$('#pg')選擇ID爲pg的元素。然後val()返回元素的值。

其次,我們需要改變

storeDate['storedValue2'] = $('#alain').prop('checked'),$('#abudhabi').prop('checked'); 
// to 
storeDate['storedValue2'] = $('#alain').prop('checked') || $('#abudhabi').prop('checked'); 

你只是誤會布爾運算符在這裏。 a || b解析爲true如果ab解析爲真。

最後罪魁禍首

storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching"); 
// to 
storeDate['storedValue3'] = $('#slt_mjrpg).val(); 

val返回元素的值。在選擇的情況下,它將返回選定選項的值。提供一個字符串參數將設爲的值。所以我們所做的只是獲得價值,我們將在後面檢查的值

在您的隱藏/顯示功能中,我們不需要改變太多。我們只是在相等操作中將這個不合適的val參數向下移動以獲得布爾值。

if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 === "Dip - Prof. PG Dip in Teaching") 
-2

我認爲會話存儲只與一個頁面一起工作。

你應該試試sessionstorage的localstorage instade。

試試這個

function storedata(){ 
    var storeDate = {}; 
    storeDate['storedValue1'] = $('input[id=pg]:checked').val(); 
    storeDate['storedValue2'] = $('input[id=alain]:checked').val(); 
    storeDate['storedValue3'] = $('#slt_mjrpg option:selected').val("Dip - Prof. PG Dip in Teaching"); 

    localStorage.setItem('storeDate', JSON.stringify(storeDate)); 

} 

var otherObj = JSON.parse(localStorage.getItem('storeDate'));   
     var otherObj1 = JSON.parse(sessionStorage.getItem('storeDate1')); 
     if (otherObj.storedValue1 && otherObj.storedValue2 && otherObj.storedValue3 !="pg") { 
      $(".pay_check,.pay_click").show(); 
      $(".pay_trans").hide(); 
     } else if (otherObj1.storedValuej === "BAP"){ 
      $('.create_btn,.no_applica').show(); 
      $('.pay_btn').hide();    
     } else { 
**// I have tried using like this but no use** 
      //$('.create_btn,.no_applica,.pay_click').hide(); 
      $('.pay_btn').show();  
     } 
+0

沒有我曾嘗試使用localStorage的沒有用 – Mahadevan

+0

抱歉不瞭解。 –

+0

我已經嘗試在本地存儲中使用本地存儲我們有兩個問題1)一旦頁面關閉,然後如果我打開新頁面仍然可用的本地存儲數據2)我已經嘗試使用本地存儲它不按預期工作 – Mahadevan