如何“丢弃”表单更改?
建立:
我有一个表单和一个“提交”按钮。 理想情况下,用户应填写表单,单击“提交”,然后退出选项卡。 如果他试图离开标签而不保存更改,我需要提醒他3个选项:
- 保存
- 丢弃:丢弃表单数据更改,并保留选项卡,就好像数据从未修改过一样。 如果用户返回相同的选项卡,他应该看到“未修改”的数据。
- 取消:只需关闭对话框,将用户保持在同一选项卡上。 用户可以进一步修改数据,点击保存等。
问题:
实现保存和取消很容易。 问题在于“丢弃”。 如果用户单击“放弃”,则表单数据应恢复到修改前的状态。
有没有办法做到这一点? 如果我没有正确解释问题,请告诉我。
您可以在jQuery .data()
函数中保存表单的初始状态。 也许做点什么
$(function(){ $('form').find(':input').each(function(i, elem) { var input = $(elem); input.data('initialState', input.val()); }); });
然后,一旦你丢弃,你可以调用一个方法,说:
function restore() { $('form').find(':input').each(function(i, elem) { var input = $(elem); input.val(input.data('initialState')); }); }
注意 :如果要将表单还原到页面上的数据而不让用户离开页面,这将非常有用。 如果您不想保存数据,请不要…保存数据。
重置表单 ,只要使用值=“”填写表单的值即可
var initials = [];
// Call this function to store all initialvalues function gettter() { $('input,select', 'form').each(function() { initials.push({ type: $(this).attr('type'), name: $(this).attr('name'), value: $(this).val() }); }); } // Call this function to restore all values function setter() { initials.each(function(index, record) { $('input[type="'+ record.type+'"][name="'+ record.name +'"]', 'form').val(record.val); }); }
但是,如果您只想重置没有任何先前值的表单;
$('form').reset();
可能关于检查用户离开页面的最佳方法是使用onbeforeunload
。 此确认框不可自定义。 看看这个问题以及本文和本文 。 基本是这样的:
var needToConfirm = true; window.onbeforeunload = confirmExit; function confirmExit() { if (needToConfirm) return "this is required but doesn't actually show"; }
可以使用按钮轻松地重置表单