【问题标题】:Form reset and programmatically set values表单重置并以编程方式设置值
【发布时间】:2026-02-04 05:35:01
【问题描述】:

我正在尝试使用以下方法重置表单:

myForm.reset();

我试图以这种方式设置值:

//solved by setting $('#myTextControl').attr('defaultValue', 'my initial value');
//Thanks RobG
$('#myTextControl').val('my value');
$('#myTextControl').attr('value', 'my value');

//solved by setting $('#myTextControl').attr('defaultChecked', false or true); initially
$('#myCheckboxControl')attr('checked', 'checked');    


//Finally it works with radios too, as shown here -> http://jsfiddle.net/4VAkp/2/
$('#myRadioControl')attr('checked', 'checked');

更新值的方式很重要,如您在此处所见 -> http://jsfiddle.net/4VAkp/3/ 使用 attr 更新值会将值固定为默认值: 错误

radio2.attr('checked', true);
text2.attr('value', 'my text2');

这不会将值设置为默认值(如预期的那样): 正确

radio.prop('checked', true);
text.val('my text');

当值由用户设置时,这可以正常工作,但如果以编程方式设置值则不起作用。

如果我先以编程方式设置一个值,然后通过 ui 并最终重置它,它会回到以编程方式设置的 on。

我怀疑应该有一种方法可以在不更改默认值的情况下以编程方式设置值。

有什么想法吗?

提前致谢,

埃里克

【问题讨论】:

  • 您如何以编程方式设置值?请提供代码示例。
  • 添加您的示例代码以获得更多说明。

标签: javascript jquery forms reset


【解决方案1】:

重置表单会将控件设置为其默认值,该值由 value 属性指定或由 defaultValue 属性设置。用户的更改不会改变其中任何一个——除了在(旧的?)IE 中,getAttribute 是错误的。

要在不修改值属性或 defaultValue 属性的情况下将表单“重置”为其他一组值,必须以编程方式设置控件的 value 属性。

【讨论】:

  • 设置 defaultValue 适用于输入/文本。感谢那!复选框/收音机是否有 defaultChecked 或类似的东西?