Javascript 修改基础form.reset()值

Javascript 修改基础form.reset()值,javascript,jquery,html,forms,reset,Javascript,Jquery,Html,Forms,Reset,我正在使用$('form-selector').get(0).reset()将表单值重置为其原始页面加载状态 编辑后,表单将通过$.ajax()提交,我将在服务器上有新的“默认”值。表单元素仍将存在于dom中,用户可以再次提交以进行更新。我希望“默认”(重置值)反映服务器上的内容(忽略任何其他外部更新)是否可以更新form.reset()将在不刷新页面的情况下将每个表单元素更改为的基础值? 跨浏览器支持会很好,但由于这是一个内部应用程序,谷歌Chrome就足够了 HTML 更新 啊!我没有提到我

我正在使用
$('form-selector').get(0).reset()
将表单值重置为其原始页面加载状态

编辑后,表单将通过
$.ajax()
提交,我将在服务器上有新的“默认”值。表单元素仍将存在于dom中,用户可以再次提交以进行更新。我希望“默认”(重置值)反映服务器上的内容(忽略任何其他外部更新)是否可以更新
form.reset()
将在不刷新页面的情况下将每个表单元素更改为的基础值?

跨浏览器支持会很好,但由于这是一个内部应用程序,谷歌Chrome就足够了

HTML 更新 啊!我没有提到我正在寻找处理所有表单元素类型的东西。 i、 e.
input[type=text],input[type=radio],input[type=checkbox],select,textarea

如果它也能处理HTML5表单元素,那将特别棒。。。 i、 e.
输入[type=date]、输入[type=number]、输入[email]、输入[url]、输入[type=range]、输入[type=color]


抱歉造成混淆。

如果您直接更改表单元素的属性,而不是使用
.val()
方法,则新值将反映在表单重置中。您需要将文本字段与单选按钮、复选框等区别对待

    $('input').attr('value', function() { return this.value });
    $('textarea').prop('innerHTML', function() { return this.value });                                              
    $(':checked').attr('checked', 'checked');                                              
    $(':selected').attr('selected', 'selected');
    $(':not(:checked)').removeAttr('checked');
    $(':not(:selected)').removeAttr('selected');                                              

Javascript不知道重置值是什么,所以您必须在页面加载或使用重置值创建隐藏字段时定义它们。然后,当您调用reset时,设置它们

假设表单中的每个字段都有隐藏字段,比如文本框(您可以对下拉列表和单选/选择进行类似操作)

如果您有两个文本字段(txtfield1和txtfield2),那么它们也会有隐藏字段(分别称为txtfield1 hdn和txtfield2 hdn)

当然,如果文本字段html中有默认值,则可以执行以下操作:

<input id="Text1" type="text" value="myValue" />

$('form-selector').get(0).reset(function() {
  $('form-selector').find('input').each(function(){
    $(this).val($(this).attr('value'));
  });
});

$('form-selector').get(0).reset(function(){
$('form-selector')。查找('input')。每个(函数(){
$(this.val($(this.attr('value'));
});
});
类似这样的内容:

$("#foo").prop("defaultValue", "bar");
正如David Budiac在他的评论中提到的,这不适用于选定元素。选择元素有一个名为的单独属性


我意识到这些链接可以访问微软的网站,但它们似乎在几乎所有主流浏览器中都能正常工作。

简短回答,没有。如果您仍然要使用本机重置函数,并且在页面刷新和表单再次构建时需要使用该函数来处理更新的值,那么不要使用ajax。很好!我不知道这个存在。但不适用于选择元素。选择元素实际上既没有defaultValue也没有defaultSelected。选项元素已选择defaultSelected.Cool。似乎是最详尽的解决方案。包括选择、日期输入、颜色输入等。简单且最佳的解决方案。谢谢
$('form-selector').get(0).reset(function() {
  $('form-selector').find('input').each(function(){
    $(this).val($($(this).attr('id') + '-hdn').val());
  });
});
<input id="Text1" type="text" value="myValue" />

$('form-selector').get(0).reset(function() {
  $('form-selector').find('input').each(function(){
    $(this).val($(this).attr('value'));
  });
});
$("#foo").prop("defaultValue", "bar");