2

ラジオ ボタンが変更されたときに div を更新するスクリプトがいくつかあります。さらに、選択したラジオの値を sessionStorage に保存して、ページに再度アクセスしたときに対応するラジオ ボタンが選択されたままになるようにします。

私の問題は、sessionStorage スクリプトと更新スクリプトを使用すると、更新スクリプトが機能しなくなり、セッションに保存された値が保持されることです。

私は特にこの行を意味します:

inhalt_time = $("input[type='radio'][name='chooseTime']:checked").val();

その行を削除すると:

$("input[type='radio'][name='chooseTime']").val(chosen_time).prop('checked', true);

更新スクリプトが再び機能します。

この競合を回避する方法を知っている人はいますか?

これが私のhtmlです:

<div class="chooseTime">
   Bitte w&auml;hlen Sie ihr gew&uuml;nschte Lieferzeit.
   <label class="radio">
      <input type="radio" name="chooseTime" value="06:00 Uhr - 10:00 Uhr" />
      06:00 Uhr - 10:00 Uhr
   </label>
   <label class="radio">
      <input type="radio" name="chooseTime" value="10:00 Uhr - 14:00 Uhr" />
      10:00 Uhr - 14:00 Uhr
   </label>
   <label class="radio">
      <input type="radio" name="chooseTime" value="15:00 Uhr - 17:00 Uhr" />
      15:00 Uhr - 17:00 Uhr
   </label>
</div>

更新のための私のjquery:

$('.chooseTime').on('change', 'input[type=radio]', function() {
     updateAnzeige();
});

function updateAnzeige() {
    inhalt_time = $("input[type='radio'][name='chooseTime']:checked").val();
    if(inhalt_time === undefined) {
        inhalt_time = "<span class='red'>Bitte wählen Sie eine gewünschte Lieferuhrzeit aus.</span>";
    }
    $('.anzeige').html(inhalt_time);            
}

sessionStorage の私の jquery:

if(sessionStorage.getItem("lieferzeitpunktart") == "Custom") {
    chosen_time = sessionStorage.getItem("lieferzeitpunkt_time");
    $("input[type='radio'][name='chooseTime']").val(chosen_time).prop('checked', true);
}
4

1 に答える 1

0

どっ!答えはとても簡単です。

を使用.val(chosen_time)$("input[type='radio'][name='chooseTime']").val(chosen_time).prop('checked', true);て、探していた値のラジオをチェックする代わりに、各ラジオ ボタンに同じ値を与えました。

もちろん、正しいコード行は次のとおりです。

$("input[type='radio'][name=chooseTime][value='"+chosen_time+"']").attr('checked', true);
于 2013-10-10T19:56:49.323 に答える