重置表单,但不重置隐藏元素

时间:2019-04-29 09:42:35

标签: javascript forms

在ajax提交之后,我想清除除隐藏元素之外的表单元素:

 function resetForm(form) {

    for (var i = 0; i < form.elements.length; i++) {
        // ! do not clean hidden
        if (form.elements[i].type !== 'submit' || ...hidden...?  ) {
            form.elements[i].value = '';
        }
    }
}

我不知道如何隐藏,提交后在Firefox中出现第二个问题,如果我重置form.elements[i].value = '',则触发html5无效(如maxlength)。

3 个答案:

答案 0 :(得分:2)

您应该使用AND运算符,因为您不应该重置submithidden输入。 看到这个:

for (var i = 0; i < form.elements.length; i++) {
    // ! do not clean hidden
    if (form.elements[i].type !== 'submit' && form.elements[i].type !== 'hidden'  ) {
        form.elements[i].value = '';
    }
}

答案 1 :(得分:2)

另一种方法是为此使用内置方法reset()

优点在于,它不仅可以重置文本字段,还可以取消选中默认情况下未选中的框,选中默认情况下选中的框,重置下拉菜单,这些操作无法使用{ {1}}

例如:

form.elements[i].value = '';

form.reset();
function resetForm()
{
  let form = document.getElementById("MyForm");
  let hidden = document.getElementById("MyHidden");
  console.log("hidden value BEFORE reset : " + hidden.value);
  form.reset();
  console.log("hidden value AFTER reset : " + hidden.value);
}

答案 2 :(得分:-1)

如果您的隐藏元素通过设置为一个值 <input type='hidden' value='afasd'> 您可以使用 document.getElementById("myForm").reset();

这会将表单重置为默认值。

编辑1:

如果您通过js将隐藏字段更改为另一个值,它甚至可以工作。不会重置。