在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)。
答案 0 :(得分:2)
您应该使用AND
运算符,因为您不应该重置submit
和hidden
输入。
看到这个:
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将隐藏字段更改为另一个值,它甚至可以工作。不会重置。