我正在创建一个chrome扩展程序,在其中我将文本区域替换为改进版本以在网站上显示富文本。在旧文本区域,要求双击并按Enter保存更改。由于该网站是在Dojo中建立的,因此这些事件是通过:
捕获的<textarea rows="1" class="old_element" data-dojo-attach-point="formula" data-dojo-attach-event="ondblclick:_onDoubleClick,onkeypress:_onKeyPress,onkeydown:_onKeyDown,onmouseup:_setInputSelection,onfocus:_setInputSelection,onkeyup:_setInputSelection" style="display: none;"></textarea>
因此,我尝试使用以下jQuery代码在新元素上按Enter键时触发这2个事件:
$('.new_element').keydown(function(e) {
if (e.keyCode == 13) {
console.log('enter key pressed');
$('.old_element').dblclick();
$('.old_element').trigger(e);
}
});
控制台日志“已按下Enter键”,但是事件没有任何反应。 任何想法?我应该使用Dojo事件处理程序吗?
感谢您的帮助
答案 0 :(得分:0)
好的,现在,我正在使用以下代码进行双击。效果很好。
$('new_element').dblclick(function(){$('old_element')[0].dispatchEvent(new MouseEvent('dblclick', {bubbles: true}));});
如果是键盘事件处理程序,我使用了以下代码。它适用于转义键,但Enter键的dispatchEvent不能按预期触发Enter键。有任何想法吗?
$('new_element').keydown(function(e) {
if (e.key === "Escape") {
$('old_element')[0].dispatchEvent(new KeyboardEvent('keydown', {bubbles: true, cancelable: true, keyCode: 27}));
return false;
} else if (e.keyCode == '13') {
$('old_element')[0].dispatchEvent(new KeyboardEvent('keydown', {bubbles: true, cancelable: true, keyCode: 13}));
return false;
}
});