0

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

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 并最终重置它,它会回到以编程方式设置的状态。

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

有什么想法吗?

提前致谢,

埃里克

4

1 回答 1

2

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

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

于 2013-04-05T06:14:36.003 回答