表单重置和以编程方式设置值

时间:2013-04-05 06:10:19

标签: javascript jquery forms reset

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

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

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

有什么想法吗?

提前致谢,

埃里克

1 个答案:

答案 0 :(得分:2)

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

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