2012年3月更新。
所以,在我最初回答这个问题的两年后,我再次看到它已经变成了一个大混乱。我觉得是时候该回头了,让我的答案真正正确,因为它是最受好评+接受的。
根据记录,Titi的答案是错误的,因为它不是原始张贴者所要求的-可以使用本机reset()方法重置表格是正确的,但是这个问题是试图清除已记住的表格如果以这种方式重设,将保留在表格中的值。这就是为什么需要“手动”重置的原因。我认为大多数人最终都从Google搜索中遇到了这个问题,并且确实在寻找reset()方法,但是它不适用于OP所谈论的特定情况。
我的原始答案是这样的:
// not correct, use answer below
$(':input','#myform')
.not(':button, :submit, :reset, :hidden')
.val('')
.removeAttr('checked')
.removeAttr('selected');
这可能适用于很多情况,包括OP,但正如注释和其他答案中指出的那样,它将清除所有值属性中的radio / checkbox元素。
一个更正确的答案(但不是完美的)是:
function resetForm($form) {
$form.find('input:text, input:password, input:file, select, textarea').val('');
$form.find('input:radio, input:checkbox')
.removeAttr('checked').removeAttr('selected');
}
// to call, use:
resetForm($('#myform')); // by id, recommended
resetForm($('form[name=myName]')); // by name
使用:text
,:radio
自己等选择被认为是不好的做法,通过jQuery的,因为他们最终以评估*:text
这使得它需要比它应该更长的时间。我确实更喜欢白名单方法,希望我在原始答案中使用了它。无论如何,通过指定input
选择器一部分以及form元素的缓存,这将使其成为此处性能最佳的答案。
如果人们对select元素的默认设置不是具有空白值的选项,则此答案可能仍然存在一些缺陷,但是它肯定会像将要获得的一样通用,因此需要逐案处理。
not()
如果您的表单具有任何隐藏的输入,只需将:hidden添加到中。