2011-10-21 106 views
2

我試圖模擬一個按鍵與下面的代碼上...模擬按鍵與jQuery表單元素

jQuery('input[name=renameCustomForm]').live('keyup', function (e) { 
     console.log('pressed'); 
}); 
jQuery('body').click(function (e) { 
     console.log(jQuery('input[name=renameCustomForm]')); 
     var press = jQuery.Event("keypress"); 
     press.which = 13; 
     jQuery('input[name=renameCustomForm]').trigger(press); 
}); 

我得到了所以從其他職位的代碼,但它不工作。有人知道爲什麼

更新

固定它...它的出現引發「按鍵」不會自動觸發「KEYUP」

+0

你只是想插入一個換行符? – pimvdb

+0

不,keyup事件觸發ajax保存,但如果他們點擊元素我想它觸發保存。這就是我努力工作的部分 – Webnet

+0

如果你只是簡單地調用ajax保存函數,你可能會更好。 – pimvdb

回答

2

通常情況下,當用戶添加東西的INOUT場,發生以下事件:

  1. ​​(一次)。
  2. keypress
  3. keyup(一次)

當模擬的關鍵事件,它沒有必要,所有的事件發生(至少一次,而鍵被按下的其他事件uccur)按此順序。該事件是手動分派的,所以正常的事件鏈沒有被激活。

因此,如果您手動觸發keypress事件,則不會觸發keyup事件。

0

您的代碼將觸發keypress你點擊頁面上的任何地方,每次..

對於你的情況可能會更好使用.blur()事件的輸入框..

jQuery('input[name=renameCustomForm]').live('keyup', function (e) { 
     console.log('pressed'); 
}).live('blur', function(){ 
     var self = $(this); 
     console.log(self); 
     var press = jQuery.Event("keyup"); 
     press.which = 13; 
     self.trigger(press); 
});