在我的页面上处理任何<textarea>的keydown事件</textarea>

时间:2011-08-12 15:13:30

标签: javascript jquery html textarea

我正在尝试处理有人在我页面上的任何<textarea>上按ENTER的情况。加载时并非所有<textarea>都在页面上(它们可以通过用户事件动态添加),因此我不知道页面加载时每个<textarea> id(因此可以'使用jQuery通过id)监听每个事件。我还尝试使用JS onkeydown事件,但我无法找到一种方法来检测导致onkeydown事件触发的键。

那么,有没有办法在我的页面上处理所有<textarea> keydown,以及导致该事件的哪个键,或者是否有一个我似乎缺少的优雅解决方案?一些全球性事件?

4 个答案:

答案 0 :(得分:3)

$("textarea").live("keydown",function(){
  // process
})

或者您可以使用delegate

这样做是将侦听器应用于执行的所有textareas以及该实例的未来。因此,如果DOM添加了任何textareas,它也会将该按键绑定到它们。

答案 1 :(得分:3)

使用delegate。您可以指定body或任何container来保存所有这些动态textareas。

$("body").delegate("textarea", "keydown",function(e){
  // code logic goes here
  if(e.which == 13){
     //Enter key down    
  }
});

答案 2 :(得分:2)

event.which会告诉您哪个键。

$('textarea').live("keydown", function(e) {
    // e.which is which key, e.g. 13 == enter
});

live上的文档。 event上的文档。

答案 3 :(得分:0)

为什么不使用JQuery然后将textarea添加为“动态”添加监听器/处理程序....有很多示例用于处理onKeyPress事件