Javascript 防止表单重置方法清除IE8中隐藏输入的最简单方法
表单的Javascript重置方法是,但在IE8和IE7中,它仍然可以。有人知道如何让它正常运转吗 我知道我可以通过循环单个输入来实现,或者在重置表单之前记住值,然后恢复它们,但我想知道是否有人能想出一种更简单的方法。如果jQuery能使您的解决方案更简单,请随意使用它。您可以在中看到一个示例Javascript 防止表单重置方法清除IE8中隐藏输入的最简单方法,javascript,html,internet-explorer,Javascript,Html,Internet Explorer,表单的Javascript重置方法是,但在IE8和IE7中,它仍然可以。有人知道如何让它正常运转吗 我知道我可以通过循环单个输入来实现,或者在重置表单之前记住值,然后恢复它们,但我想知道是否有人能想出一种更简单的方法。如果jQuery能使您的解决方案更简单,请随意使用它。您可以在中看到一个示例 根据,这可能不是IE bug,重置方法对没有初始值的元素的影响是未定义的。您可以使用JavaScript函数捕获重置按钮按下,将这些值保存为cookie,然后返回true以完成重置过程。重新加载时,您可以
根据,这可能不是IE bug,重置方法对没有初始值的元素的影响是未定义的。您可以使用JavaScript函数捕获重置按钮按下,将这些值保存为cookie,然后返回true以完成重置过程。重新加载时,您可以检查这些cookie并将这些值重新插入。我正在考虑使用jQuery执行类似的操作:
$(document).delegate("form", "resetForm", function() {
$(this).find("input[type=hidden]").each(function() {
$(this).prop("defaultValue", $(this).val());
});
this.reset();
});
每当我想重置表单时,我都可以执行以下操作:
$("#whateverForm").trigger("resetForm");
下面的代码片段似乎也适用于IE8
$("#testInput").val('foo');
$("#testForm")[0].reset();
$("#result").html($("#testInput").val());
更新:
为什么不创建一个自定义重置函数呢
$("#resetbutton").on("click", function() {
var form = $(this).closest('form');
form.find("input:not(:hidden)").val('');
form.find("select").prop('selected', false);
// so on
});
执行此操作的一种简单方法是,在重置时使重置临时从窗体中删除隐藏的元素
function fixReset() {
var testForm = document.getElementById("testForm");
testForm._nativeReset = testForm.reset;
testForm.reset = function(){
var hidden = $('input[type=hidden]',this).detach();
this._nativeReset();
$(this).append(hidden);
}
};
$(document).ready(fixReset);
这样,如果愿意,您仍然可以使用本机重置按钮。这种方法可以很容易地扩展到处理所有表单我不确定使用cookie是否是个好主意。可能存在大小限制,如果输入太多,可能会阻止它们工作。还有,你在说什么?那代码在IE8中对我不起作用。您可以在@mikez302上看到它,这是一种不太可能的行为,请查看我的更新以获得替代解决方案。