Javascript 无格式重置输入
我有输入元素,我想重置以前的值(不需要原始值)。有两种方法:Javascript 无格式重置输入,javascript,jquery,html,keystroke,Javascript,Jquery,Html,Keystroke,我有输入元素,我想重置以前的值(不需要原始值)。有两种方法: 将该值保存在另一个变量中,然后再次将其拉出 按ESC键。但我不希望用户按ESC键,而是单击一个按钮 对于#2,如何使用jquery创建ESC击键?当您仍在字段中时,ESC工作 单击按钮时,该字段将失去焦点,值将存储在该字段中,因此您无法通过默认浏览器过程撤消该字段 您只能使用您提到的#1选项 在字段模糊时(失去焦点时的事件),您应该存储该值,当您单击按钮时,恢复到存储的值。以下是一个: 所以问题2079185 $(文档).ready
对于#2,如何使用jquery创建ESC击键?当您仍在字段中时,ESC工作 单击按钮时,该字段将失去焦点,值将存储在该字段中,因此您无法通过默认浏览器过程撤消该字段 您只能使用您提到的#1选项 在字段模糊时(失去焦点时的事件),您应该存储该值,当您单击按钮时,恢复到存储的值。以下是一个:
所以问题2079185
$(文档).ready(函数(){
$(':input.remeeve')。每个(函数(){
$(this.attr('data-memory',$(this.val());
});
$('button.reset')。单击(函数(){
$(':input.remeeve')。每个(函数(){
$(this.val($(this.attr('data-memory'));
});
});
});
重置
这基本上存储了每个输入元素在onload期间的原始值,其类为
记住
,并指示具有重置
的按钮在每次单击时将其还原。忘记生成诸如击键之类的事件。尽管您可以(以各种不可移植的方式)创建事件并将它们路由到事件处理系统,但这只会导致调用适当的事件处理程序函数;它不会使浏览器为用户生成的操作(如击键或鼠标单击)执行默认操作
在任何情况下,你谈论的在Escape上重置的行为都是IE的一个怪癖:在其他浏览器中,Escape没有任何效果,即使在IE中,它也不可靠。具体地说,在正常形式中,一次转义按下会丢失自上次焦点以来的更改,而一行中的两次转义按下会将整个形式重置为初始值。但是,如果窗体中有一个
,则按一次Escape键可重置窗体并聚焦重置按钮。这使得意外丢失您键入的所有内容变得更加容易,这也是不在表单中包含重置按钮的另一个好理由
因此,如果要重置为初始值,可以调用form.reset()
。如果只想重置一个字段,则可以设置复选框/收音机的input.value=input.defaultValue
(或input.checked=input.defaultChecked
,类似的defaultSelected
打开选项)
但是,如果您想要字段上次聚焦时出现的值,如IE在没有重置按钮时的行为,则必须执行一些变量记忆,例如:
var undonevalue= $('#undoable').val();
$('#undoable').focus(function() {
undonevalue= $('#undoable').val();
});
$('#undoer').click(function() {
$('#undoable').val(undonevalue);
});
每个元素(input、checkbox、radio)都有一个属性,该属性包含默认值,元素被初始化为斜体。
此场景不适用于以前的值
// pseudocode
input.defaultValue;
radio.defaultChecked;
checkbox.defaultChecked;
要通过按ESC键将默认值设置为输入,请执行以下操作:
$(document).ready(function(){
// reset by pressing ESC with focus on input
$('input').keypress(function(e) {
if (e.keyCode == 27) {
this.value = this.defaultValue;
}
});
});
+1用于使用attr而不是数据。更干净、更高效!将
置于
之外是完全有效的。对于不打算提交的表单,这是正常的。唯一的缺点是单选按钮没有正确分组。实际上这是正确/最好的答案。谢谢你简洁而详细的解释。您为未来的观众制作了我的一天:):)有一个名为defaultValue
的默认javascript属性。您可以对单个元素使用input.value=input.defaultValue
。当外部变量已经存在时,在其中保存数据是没有意义的。
$(document).ready(function(){
// reset by pressing ESC with focus on input
$('input').keypress(function(e) {
if (e.keyCode == 27) {
this.value = this.defaultValue;
}
});
});