Javascript 无格式重置输入

Javascript 无格式重置输入,javascript,jquery,html,keystroke,Javascript,Jquery,Html,Keystroke,我有输入元素,我想重置以前的值(不需要原始值)。有两种方法: 将该值保存在另一个变量中,然后再次将其拉出 按ESC键。但我不希望用户按ESC键,而是单击一个按钮 对于#2,如何使用jquery创建ESC击键?当您仍在字段中时,ESC工作 单击按钮时,该字段将失去焦点,值将存储在该字段中,因此您无法通过默认浏览器过程撤消该字段 您只能使用您提到的#1选项 在字段模糊时(失去焦点时的事件),您应该存储该值,当您单击按钮时,恢复到存储的值。以下是一个: 所以问题2079185 $(文档).ready

我有输入元素,我想重置以前的值(不需要原始值)。有两种方法:

  • 将该值保存在另一个变量中,然后再次将其拉出
  • 按ESC键。但我不希望用户按ESC键,而是单击一个按钮

  • 对于#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;
            }
        });
    });