我在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。
,因为当您按提交按钮时,它可能会在单击处理程序之前触发。
您需要先保存值,然后提交表单。