2017-08-09 160 views
0

我有一個選定的多個選擇字段,我將用戶的選擇保存在localstorage.language_request中。當用戶回來時,我需要用先前的選擇更新字段。使用localStorage變量更新選擇的多個選擇字段

我的JS保存用戶所選擇的選項:

$('.calcul_checkout').on("change keyup", function(){ 
    var language_request_brut = $('#language_request').val(); 
    var language_request = []; 
    jQuery.each(language_request_brut, function(i, val){ 
      language_request.push(val) 
}); 
    localStorage.language_request = language_request; 
} 

我的JS當頁面上的用戶的回報,我需要更新的選擇選擇的領域之前選擇的

if (localStorage.language_request != null){ 
$("#language_request").val(localStorage.language_request).trigger("chosen:updated"); 
} 

所選擇的字段(在導軌):

<span> 
<%= select_tag(:language_request, options_for_select([['Français', 'FR'], 
    ['Anglais', 'EN'], 
    ['Italien', 'IT'], 
    class:"answer language_request calcul_checkout chosen-select", multiple: true) %> 
</span> 

的概率lem, localStorage.language_request等於[「FR,EN」]。它將所有選項保存到一個字符串中。爲了更新Chosen字段,我需要將這個數組格式化爲[「FR」,「EN」](一個字符串)。

+0

你有沒有想過簡單地拆分字符串? – scriptify

+0

好主意@scriptify我試過了,顯然它工作。我會做一些測試,以確保。 – Blueone

回答

0

我不得不更新我這樣的代碼與分裂梅索德:

if (localStorage.language_request != null){ 
     $("#language_request").val(localStorage.language_request.split(",")).trigger("chosen:updated"); 
     } 
0

在這裏,你需要從

$('.calcul_checkout').on("change keyup", function(){ 
    var language_request_brut = $('#language_request').val(); 
    var SelectedLanguage = language_request_brut.split(","); 
    var language_request = []; 
    for(i=0;i<SelectedLanguage.length;i++) 
    { 
      language_request.push(SelectedLanguage[i]) 
    } 
    localStorage.language_request = language_request; 
} 

更改代碼這將幫助你,因爲$( '#language_request')。VAL()函數返回值 「FR,EN」,並直接推入。所以spiting string會幫助你。

+0

謝謝,我的代碼中有這個錯誤'Uncaught TypeError:language_request_brut.split不是一個函數' – Blueone