我有一个带有标准复位按钮的表格,因此编码:
<input type="reset" class="button standard" value="Clear" />
麻烦的是,表示表单属于多阶段排序,因此如果用户填写一个阶段然后稍后返回,则单击“清除”按钮时,不会重置各个字段的“记住”值 .
我认为附加一个jQuery函数来遍历所有字段并“手动”清除它们就可以了 . 我已经在表单中使用了jQuery,但我只是起步速度,所以我不知道如何解决这个问题,除了通过ID单独引用每个字段,这看起来效率不高 .
TIA提供任何帮助 .
30 回答
来自http://groups.google.com/group/jquery-dev/msg/2e0b7435a864beea:
如果你有这样的输入,设置
myinput.val('')
可能无法模拟"reset" 100%:例如,对默认值为50的输入调用
myinput.val('')
会将其设置为空字符串,而调用myform.reset()
会将其重置为初始值50 .修改
$(document).ready()
情况的最多投票答案:于2012年3月更新 .
所以,在我最初回答这个问题两年后,我回过头来看它已经变成了一个大混乱 . 我觉得现在是时候回到它并让我的答案真正正确,因为它是最受欢迎的 .
为了记录,Titi的答案是错误的,因为它不是原始海报所要求的 - 使用原生重置()方法重置表单是正确的,但这个问题是试图清除记住的表格如果以这种方式重置它将保留在表单中的值 . 这就是需要“手动”复位的原因 . 我假设大多数人都是从谷歌搜索结束这个问题,并且真正寻找reset()方法,但它不适用于OP所讨论的特定情况 .
我的答案是这样的:
这可能适用于很多情况,包括OP,但正如评论和其他答案中所指出的,将清除任何值属性中的radio / checkbox元素 .
更多的答案(但不完美)是:
使用
:text
,:radio
等选择器本身被jQuery认为是不好的做法,因为它们最终评估为*:text
,这使得它需要更长的时间 . 我更喜欢白名单方法,并希望我在原来的答案中使用它 . 无论如何,通过指定选择器的input
部分加上表单元素的缓存,这应该使它成为表现最佳的答案 .如果人们对选择元素的默认值不是具有空白值的选项,那么这个答案可能仍然存在一些缺陷,但它肯定是通用的,因为它需要根据具体情况进行处理 . .
只需使用
jQuery Trigger event
就像这样:这将重置复选框,单选按钮,文本框等...基本上它会将您的表单转换为默认状态 . 只需将
#ID, Class, element
放在jQuery
选择器中即可 .Paolo接受的答案存在很大问题 . 考虑:
.val('') 行还将清除分配给复选框和单选按钮的任何
value
. 所以如果(像我一样)你做这样的事情:使用接受的答案会将您的输入转换为:
糟糕 - 我正在使用那个 Value !
这是一个修改后的版本,它将保留您的复选框和无线电值:
jQuery Plugin
我创建了一个jQuery插件,所以我可以在任何需要的地方轻松使用它:
所以现在我可以通过调用它来使用它:
清除表单有点棘手,并不像看起来那么简单 .
建议您使用jQuery form plugin并使用其clearForm or resetForm功能 . 它负责大多数角落案件 .
的document.getElementById( 'FRM') . 复位()
我经常这样做:
要么
考虑使用validation plugin - 太棒了!重置表单很简单:
这是让你入门的东西
当然,如果你有复选框/单选按钮,你需要修改它以包含它们并设置
.attr({'checked': false});
edit Paolo's answer更简洁 . 我的回答更加冗长,因为我不知道
:input
选择器,也没想过简单地删除checked属性 .我发现这很有效 .
基本上没有一个提供的解决方案让我开心 . 正如一些人指出的那样,他们清空表格而不是重置表格 .
但是,有一些javascript属性可以帮助:
defaultValue用于文本字段
defaultChecked复选框和单选按钮
defaultSelected用于选择选项
这些存储了页面所在字段的值加载 .
写一个jQuery插件现在是微不足道的:(对于不耐烦...这里是一个演示http://jsfiddle.net/kritzikratzi/N8fEF/1/)
插件代码
用法
一些笔记......
我没有查看新的html5表单元素,有些可能需要特殊处理,但同样的想法应该有效 .
元素需要直接引用 . 即
$( "#container" ).resetValue()
将无效 . 总是使用$( "#container :input" )
代替 .如上所述,这是一个演示:http://jsfiddle.net/kritzikratzi/N8fEF/1/
您可能会发现,如果没有jQuery,这实际上更容易解决 .
在常规JavaScript中,这很简单:
我总是记得,虽然我们使用jQuery来增强和加速编码,但有时它实际上并不快 . 在这些情况下,使用其他方法通常会更好 .
我做了Francis Lewis' nice solution的略微变化 . 他的解决方案没有做的是将下拉选项设置为空白 . (我想当大多数人想要"clear"时,他们可能想让所有值都为空 . )这个用
.find('select').prop("selectedIndex", -1)
来做 .我通常会在表单中添加一个隐藏的重置按钮 . 只需要:$('#reset') . click();
这对我有用,pyrotex回答没有'重置选择字段,拿走他的,这里'我的编辑:
我正在使用Paolo Bergantino解决方案,这个解决方案很棒但很少调整......特别是使用表单名称而不是id .
例如:
现在,当我想使用它时,可以做到
如您所见,这可以使用任何形式,因为我使用css样式来创建按钮,单击时页面不会刷新 . 再次感谢Paolo的意见 . 唯一的问题是如果我在表单中有默认值 .
我使用下面的解决方案,它适用于我(混合传统的JavaScript与jQuery)
我只是PHP的中间人,有点懒于深入研究像JQuery这样的新语言,但这不是以下简单而优雅的解决方案吗?
看不出有两个提交按钮的原因,只是出于不同的目的 . 那简单地说:
您只需将值重新定义为默认值即可 .
我在一个相当大的表单(50个字段)上使用的方法是用AJAX重新加载表单,基本上回调服务器并返回带有默认值的字段 . 这比使用JS获取每个字段然后将其设置为默认值要容易得多 . 它还允许我将默认值保存在一个位置 - 服务器的代码 . 在这个网站上,还有一些不同的默认值,具体取决于帐户的设置,因此我不必担心将这些发送给JS . 我必须处理的唯一一个小问题是一些建议字段需要在AJAX调用之后进行初始化,但并不是什么大问题 .
所有这些答案都很好,但绝对最简单的方法是使用虚假重置,即使用链接和重置按钮 .
只需添加一些CSS来隐藏真正的重置按钮 .
然后在您的链接上添加如下
希望这可以帮助!一个 .
这里有复选框的刷新并选择:
我遇到了同样的问题,Paolo的帖子帮助了我,但我需要调整一件事 . 我的带有advanced advancedindexsearch的表单只包含输入字段并从会话中获取值 . 出于某种原因,以下内容对我不起作用:
如果我在此之后发出警报,我会看到正确删除的值,但之后它们会再次被替换 . 我仍然不知道如何或为什么,但以下行确实为我做了诀窍:
Paolo的答案没有考虑日期选择器,将其添加到:
我对Paolo Bergantino的原始答案做了一些改进
通过这种方式,我可以将任何上下文元素传递给函数 . 我可以重置整个表单或只重置一组字段,例如:
另外,保留输入的默认值 .
这是我的解决方案,也适用于新的html5输入类型:
补充接受的答案,如果您使用SELECT2插件,则需要调用select2脚本以使更改成为所有select2字段: