jQuery'Enter'和'ESC'模拟

时间:2010-10-13 16:29:38

标签: javascript jquery

我想模拟几次点击。 “保存”和“取消”锚点击。

我将此作为我的输入模拟

$('.group').live('keypress', function(e){
    code = e.keyCode ? e.keyCode : e.which;
    if(code.toString() == 13){
        $(this).find('a.saveChanges').click();
    }

});

这是我的esc模拟

$('.group').live('keypress', function(e){
    code = e.keyCode ? e.keyCode : e.which;
    if(code.toString() == 0){
        $(this).find('a.discardChanges').click(function(){
            GROUP.find('.group-text')
                .text(GROUP.data('origText'))
                .end().removeData('origText');
            GROUP.find('.groupcount').fadeIn('slow');
            GROUP.find('.group-image').fadeIn('slow');
            GROUP.removeClass('editmode');
        });
    }
});

我的输入看起来很完美,但我的esc没有。我现在正在Firefox中运行它。

2 个答案:

答案 0 :(得分:4)

只需使用e.which即可。 jQuery在浏览器中为您规范化。

然后测试27

编辑:出于某种原因,您还需要使用keyup而不是keypress来使用ESC键。

示例: http://jsfiddle.net/uRE7x/

$('.group').live('keyup', function(e){
    if(e.which == '27'){
        $(this).find('a.discardChanges').click(function(){
            GROUP.find('.group-text')
                .text(GROUP.data('origText'))
                .end().removeData('origText');
            GROUP.find('.groupcount').fadeIn('slow');
            GROUP.find('.group-image').fadeIn('slow');
            GROUP.removeClass('editmode');
        });
    }
});

答案 1 :(得分:0)

由于您没有提供任何HTML,我只专注于esc功能。 esc是字符27,可能是你的功能失效的原因。

  <html>
    <input></input>
    <script>
    $(document).delegate('input','keypress', function(e){
        code = e.keyCode ? e.keyCode : e.which;
        if(code=== 27){
            alert('esc pressed');
        }
    });
    </script>
  </html>