2017-08-09 18 views
0

私は選択した複数の選択フィールドを持っており、ユーザーの選択をlocalstorage.language_requestに保存します。ユーザーが戻ってきたら、以前の選択肢でフィールドを更新する必要があります。ユーザーページのリターンと私は選択した複数の選択フィールドをlocalStorage変数で更新します

if (localStorage.language_request != null){ 
$("#language_request").val(localStorage.language_request).trigger("chosen:updated"); 
} 
以前に選択した選択肢で選択フィールドを更新する必要がある場合

$('.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:ユーザーが選択した選択肢を保存する

私のJS

(レール内)が選択フィールド:

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

PROB lem、 localStorage.language_requestは["FR、EN"]と同じです。すべての選択肢を1つの文字列に保存します。そして、Chosenフィールドを更新するためには、この配列を["FR"、 "EN"](選択して1つの文字列)にフォーマットする必要があります。ここで

+0

は、あなたは、単に文字列を分割することについて考えたことがありますか? – scriptify

+0

良いアイデア@scriptify私は試して、明らかにそれが動作しています。私は確かにいくつかのテストを行います。 – Blueone

答えて

0

私はスプリットMethodeのと、このように私のコードを更新する必要がありました:

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

、あなたは$( '#のlanguage_request')。valを()関数は、 "FR、EN" として値を返し、あなたが直接それをプッシュするため、これがお手伝いします

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

からコードを変更する必要があります。だから拍手する文字列があなたを助けます。

+0

ありがとう、私はあなたのコード 'Uncaught TypeError:language_request_brut.splitは関数ではありませんこのエラーがあります' – Blueone

関連する問題