我有了這個原型代碼來檢測輸入按下textarea的。KeyDown事件被調用兩次
document.observe('keydown', function(e, el) {
if ((e.keyCode == 13) && (el = e.findElement('.chattext'))) {
e.stop();
// foo bar
}
}
和HTML
<textarea id="chattext_17" class="chattext" cols="20" rows="3"></textarea>
但問題是,該事件被調用兩次。我甚至試圖重寫它到jQuery
$('.chattext').live('keydown', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
// foo bar
}
});
但即使如此,事件被調用兩次。
當我嘗試使用Firebug調試它,它總是跳到這裏完成事件處理
function createWrapper(element, eventName, handler) {
var id = getEventID(element);
var c = getWrappersForEventName(id, eventName);
if (c.pluck("handler").include(handler)) return false;
var wrapper = function(event) {
if (!Event || !Event.extend || // always false here
(event.eventName && event.eventName != eventName))
return false;
Event.extend(event);
handler.call(element, event); // here the event gets called again
};
wrapper.handler = handler;
c.push(wrapper);
return wrapper;
}
我沒有原型大師後,所以我不知道問題出在哪裏可以。
爲什麼keydown事件調用兩次?
哇咔咔,我發現我有js文件鏈接兩次......反正THX :) – 2009-09-26 14:00:07