2010-10-13 57 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>