LocalStorage:存储复选框会自动检查



我在php中有类似的东西:

    if(isset($_POST['submit']){ 
            $check = in_array($row['service_object_id'], $values) ? 'checked' : ''; 
    }                       
    echo '<input type="checkbox" class="faChkRnd" id="'.$row['service_object_id'].'" name="list[]" value="'.$row['service_object_id'].'" '.$check.'>';

每次我按下提交按钮时,都会检查$check中的值的复选框。它运行良好,但我想在按下按钮后自动存储在LocalStorage中检查的复选框。

我已经在单击后使用此脚本存储它们,但是它不会自动工作:

    <script type = "text/javascript"> 
$('.faChkRnd').on('click', function() {
  var fav, favs = [];
  $('.faChkRnd').each(function() { // run through each of the checkboxes
    fav = {id: $(this).attr('id'), value: $(this).prop('checked')};
    favs.push(fav);
  });
  localStorage.setItem("favorites", JSON.stringify(favs));
});
$(document).ready(function() {
  var favorites = JSON.parse(localStorage.getItem('favorites'));
  if (!favorites.length) {return};
  console.debug(favorites);
  for (var i=0; i<favorites.length; i++) {
    console.debug(favorites[i].value == 'on');
    $('#' + favorites[i].id ).prop('checked', favorites[i].value);
  }
});
</script>

有什么想法吗?谢谢!

您Shound检查favorites[i].value的类型。字符串或布尔值!?

字符串:

if(favorites[i].value == "true") {
    $('#' + favorites[i].id ).prop('checked',true);
}

布尔值:

$('#' + favorites[i].id ).prop('checked',favorites[i].value);

示例:

字符串:https://jsfiddle.net/utm4za2p/1/

布尔值:https://jsfiddle.net/utm4za2p/3/

您可以使用提交方法。
您的表格具有提交按钮,必须将其更改为一个常规按钮。

,您应该放

$('.yourForm').submit()  

到点击处理程序的末尾,您可以将值保存到localstorage。

,因为当您按提交按钮时,它可能会在单击处理程序之前触发。
您需要先保存值,然后提交表单。

最新更新