我有INPUT元素,我想重置以前的值(不是必需的原始值)。有2种方式:没有FORM的复位INPUT
- 另一个变量保存价值,并再次将其拉出
- ,按ESC键。但我不希望用户按ESC键,而是点击一个按钮。
因此,对于#2,我如何创建一个ESC键击使用jQuery?
我有INPUT元素,我想重置以前的值(不是必需的原始值)。有2种方式:没有FORM的复位INPUT
因此,对于#2,我如何创建一个ESC键击使用jQuery?
下面是一个SSCCE:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2079185</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$(':input.remember').each(function() {
$(this).attr('data-remember', $(this).val());
});
$('button.reset').click(function() {
$(':input.remember').each(function() {
$(this).val($(this).attr('data-remember'));
});
});
});
</script>
</head>
<body>
<input type="text" class="remember" value="foo">
<button class="reset">Reset</button>
</body>
</html>
这基本上存储了onload期间每个输入元素的原始值和一个remember
类,并指示该按钮的类别为reset
以在每次点击时恢复它。
当你还在场内时,Esc仍然有效。
的时刻,你按一下按钮,现场就会失去重点和值将被存储在外地,所以你无法通过默认的浏览器程序撤消它..
您只能使用#1选项你提到..
在球场上的模糊(事件当你失去焦点),你应该保存的价值,当你点击按钮返回到存储的一个..
忘记生成按键等事件。尽管您可以(以各种不可移植的方式)创建事件并将它们路由到事件处理系统,但这只会导致调用适当的事件处理函数;它会而不是使浏览器执行用户生成的操作(如按键或鼠标单击)的默认操作。
在任何情况下,您在重置Escape时所说的行为都是一个IE怪癖:在其他浏览器中,Escape没有任何影响,甚至在IE中它也不可靠。具体来说,在一个正常形式中,一个Escape按键失去自上次焦点以来的更改,并且一行中的两个Escape按键将整个表单重置为初始值。但是,如果表单中有一个<input type="reset">
,则单个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);
});
其实这是正确/最佳答案。感谢您的清晰和详细的解释。你让我今天一整天都感觉很好 :) :) – 2010-08-24 11:18:02
每个元素(输入,复选框,广播)都有一个属性,其中包含默认值,该元素是初始化的。 此方案不适用于以前的值。
// 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;
}
});
});
对于未来的观众 - 有一个默认的JavaScript属性称为'defaultValue'。您可以在各个元素上使用'input.value = input.defaultValue'。当外部变量已经存在时,没有必要保存数据。 – Shadow 2013-07-22 01:50:40