仅重置表单中的字段集并保留所有其他值

ins*_*ere 5 html javascript forms jquery

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

\n\n
<form>\n    <fieldset id="1">\xe2\x80\xa6</fieldset>\n    <fieldset id="2">\xe2\x80\xa6</fieldset>\n</form>\n
Run Code Online (Sandbox Code Playgroud)\n\n

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

\n\n
$(\'#1 :input\').val(\'\');\n
Run Code Online (Sandbox Code Playgroud)\n\n

但这不会恢复之前设置的默认值。或者我必须事先存储所有默认值,并且必须检查文本区域、输入、复选框等\xc2\xa0\xe2\x80\xa6 有另一种方法可以做到这一点吗?

\n

bil*_*can 4

不确定这是否是您的意思,但这将过滤所有没有 of 的字段集idtwo然后将这些字段集中的表单元素重置为其默认值(请注意,这只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);
    });

  });
});
Run Code Online (Sandbox Code Playgroud)

示例标记

<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>
Run Code Online (Sandbox Code Playgroud)

这是一个小提琴

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