2010-10-13 82 views
1

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

我有这个作为我进入模拟

$('.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中运行这个。

+4

**为什么**是'.toString()' - 一个数字,然后使用类型强制的'=='来...比较它的数字?此外,jQuery规范化事件,以便您不需要检查'keyCode'属性。它将永远在那里(用于键盘事件)。 – 2010-10-13 16:32:12

+0

哦?嗯,你能告诉我我该怎么做呢?我认为这是有效的,因为我的输入模拟工作像一个魅力。也许我的代码臃肿;-)因此,我的var代码,并让jQuery处理我的IF语句? – Eli 2010-10-13 16:37:06

+2

当你在谈论模拟时,你的意思是检测到这个按键?要真正模拟它们,你应该做一些像'var e = jQuery.Event(“keyup”); e.which = 13; $('textarea#foo')。trigger(e);' – Tgr 2010-10-13 16:41:49

回答

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'); 
     }); 
    } 
}); 
+0

哦,很酷,雅我做到了,当我读你的评论,但它不工作,所以我想我得到你说错了。但是,你的权利,他们的关键是什么搞砸了我;-) – Eli 2010-10-13 16:46:36

+0

更多类型的强制?试试'e.which === 27'。 – 2010-10-13 16:54:35

+0

雅,我注意到了,并将它固定在我身边,当我比较我已经证明了什么;) – Eli 2010-10-13 16:55:41

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>