4

是否有可能只恢复表单的一部分?例如,我想重置fieldset#1 中的所有值,但保留fieldset#2 中的所有其他值:

<form>
    <fieldset id="1">…&lt;/fieldset>
    <fieldset id="2">…&lt;/fieldset>
</form>

我当然可以使用这样的 JavaScript-/jQuery-解决方案(用心编写,未经测试):

$('#1 :input').val('');

但这不会恢复以前设置的默认值。或者我必须事先存储所有默认值,并且我必须检查文本区域、输入、复选框等……还有其他方法吗?

4

4 回答 4

3

不确定这是否是您的意思,但这将过滤所有没有idof的字段集two,然后将这些字段集中的表单元素重置为其默认值(请注意,这defaultValue仅适用于输入/文本区域!):

$(document).ready(function() {

  $('#btn-reset').on('click', function(e) {
    e.preventDefault();

    $('form > fieldset').filter(function() {
      return $(this).prop('id') !== 'two';
    }).children(':input').each(function() {
      $(this).val(this.defaultValue);
    });

  });
});

示例标记

<form>

    <fieldset id="one">
        <input type="text" value="this is a default value" />
        <textarea>this is another default value</textarea>
        <p>this paragraph doesn't get looped over</p>
    </fieldset>

    <fieldset id="two">
        <input type="text" value="text here.." />
        <textarea>hello world!</textarea>
    </fieldset>

    <button id="btn-reset">Reset</button>

</form>

这是一个小提琴

更改所有值,然后单击重置,第一个字段集中的所有值将重置为其默认值,而第二个字段将保持不变。

于 2012-09-21T12:11:53.393 回答
1

希望这能解决你的问题

http://www.electrictoolbox.com/jquery-clear-form/

于 2012-09-21T11:51:49.640 回答
0

你可以使用 KnockoutJS 来做到这一点。使用默认值创建视图模型。

于 2012-09-21T11:49:19.300 回答
0

没有 JavaScript 就没有办法做到这一点......重置按钮将始终重置整个表单元素。

于 2012-09-21T11:50:07.157 回答