仅在提交时使用 javascript 保存表单状态
Saving form state with javascript only on submit
所以。我有一个有很多复选框的表单。除此之外,我还有一段javascript代码,应该在用户按下提交时保存每个复选框的状态。我短暂而烦人的问题是两件事。问题:我想仅在提交表单时将复选框状态保存到cookie,现在如果我标记复选框并重新加载页面而不提交,它会保存。我正在使用Javascript和Cookie,这两件事我很陌生。所以我非常感谢所有的帮助。这是我从这里得到的代码:
function getStorage(key_prefix) {
if (window.localStorage) {
return {
set: function(id, data) {
localStorage.setItem(key_prefix+id, data);
},
get: function(id) {
return localStorage.getItem(key_prefix+id);
}
};
} else {
return {
set: function(id, data) {
document.cookie = key_prefix+id+'='+encodeURIComponent(data);
},
get: function(id, data) {
var cookies = document.cookie, parsed = {};
cookies.replace(/([^=]+)=([^;]*);?'s*/g, function(whole, key, value) {
parsed[key] = unescape(value);
});
return parsed[key_prefix+id];
}
};
}
}
jQuery(function($) {
var storedData = getStorage('com_mysite_checkboxes_');
$('div.check input:checkbox').bind('change',function(){
storedData.set(this.id, $(this).is(':checked')?'checked':'not');
}).each(function() {
var val = storedData.get(this.id);
if (val == 'checked') $(this).attr('checked', 'checked');
if (val == 'not') $(this).removeAttr('checked');
if (val == 'checked') $(this).attr('disabled','true');
if (val) $(this).trigger('change');
});
});
所以我想基本上只在提交时保存到cookie。
绑定到窗体的submit
事件,而不是所有复选框的change
事件。
尝试用这个代替你的第二个函数:
jQuery(function($) {
// bind to the submit event of the form
$('#id-of-your-form').submit(function() {
// get storage
var storedData = getStorage('com_mysite_checkboxes_');
// save checkbox states to cookie
$('div.check input:checkbox').each(function() {
// for each checkbox, save the state in storage with this.id as the key
storedData.set(this.id, $(this).is(':checked')?'checked':'not');
});
});
});
jQuery(document).ready(function() {
// on load, restore the checked checkboxes
$('div.check input:checkbox').each(function() {
// get storage
var storedData = getStorage('com_mysite_checkboxes_');
// for each checkbox, load the state and check it if state is "checked"
var state = storedData.get(this.id);
if (state == 'checked') {
$(this).attr('checked', 'checked');
}
});
});
相关文章:
- 是否可以在浏览器中使用纯JavaScript保存音频流
- JavaScript-保存、存储和更新数组
- 使用 Javascript 保存 Popup 数据
- 以HTML和javascript保存数据
- 通过本地应用程序的Javascript保存文件
- 如何使用javascript保存网页
- JavaScript保存来自ajax请求的数据
- Javascript:保存和恢复浏览器窗口大小
- Javascript:保存和恢复样式状态在IE中不起作用
- 在英特尔XDK上使用javascript保存捕获的图像
- Tinymce-创建一个自定义的javascript保存按钮
- 通过javascript保存带有当前日期和时间的excel文件
- 使用javascript保存XHR文件
- 如何使用 javascript 保存当前网址
- 如何使用 JavaScript 保存菜单状态
- 通过 Javascript 保存/取消输入
- Javascript 保存相同的 ID,而不会在 LocalStorage 中覆盖另一个 ID
- 从外部域 javascript 保存的本地存储不会保存在外部域下
- 无法使用 javascript 保存数据
- 如何使用 Ajax 和 JavaScript 保存 XML 文件