使用localStorage变量

时间:2017-08-09 14:54:36

标签: javascript jquery ruby-on-rails ruby jquery-chosen

我有一个Chosen多选字段,我在localstorage.language_request中保存用户的选项。当用户回来时,我需要使用之前的选择来更新字段。

我的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");
}

选择字段(在Rails中):

<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>

问题 localStorage.language_request等于[“FR,EN”]。它将所有选项保存为一个字符串。要更新选择字段,我需要将此数组格式化为[“FR”,“EN”](选择一个字符串)。

2 个答案:

答案 0 :(得分:1)

我必须使用拆分方法更新我的代码:

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

答案 1 :(得分: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字符串会帮助你。