重置表单,但包含在 DIV 中的输入除外

Reset form except one input enclosed in DIV

本文关键字:输入 DIV 表单 包含      更新时间:2023-09-26

当访问者刷新页面时,我正在使用它来重置表单:

$(document).ready(function () {
  resetForms();
});
function resetForms() {
  document.getElementById('configurator-form').reset();
}

输入是无线电,选择,文本。(div class="snap")中有一个输入,我需要从重置中排除。我该怎么做?

我可以使用:

.not('.snap input')

地方?我想要做到这一点,我需要针对输入而不是整个表单?字段有默认值,所以我认为我不想使用"removeAttr",尽管我可能是错的?

编辑

我知道这类似于另一个问题,但我无法得到可接受的答案。建议采用表单值,然后重置表单,然后将值放回表单中。我已经尝试过这个:

$(window).load(function() {
  var snap = $(".snap input").val();
  resetForms();
  $(".snap input").val(snap);
});
function resetForms() {
  document.getElementById('configurator-form').reset(); 
}

。但它尚未恢复".snap 输入"字段的值。值得注意的是,snap 字段有一个随机名称和 ID,所以我不能使用 getElementById 例如。感谢您的耐心等待,因为您可能知道我是 JQuery 的新手。

编辑 2

好的,重置表单抛出错误"未定义"。这个版本似乎工作得很好:

$(document).ready(function(){
  var snap = $(".snap").html();
  $('#configurator-form')[0].reset();
  $(".snap").html(snap);
});

你的方法应该有效。

你唯一的错误是选择器,

你的JS应该看起来像这样:(选择器中没有空格)

function resetForms() {
var value = $("input.snap").val();
  document.getElementById('configurator-form').reset();
   $("input.snap").val(value);
}

工作小提琴