触发.dblclick()不起作用(Dojo问题?)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了触发.dblclick()不起作用(Dojo问题?)相关的知识,希望对你有一定的参考价值。

我正在创建一个chrome扩展,我用一个改进的版本替换textarea以在网站上显示富文本。在旧的textarea上,要求双击并按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键时,我试图触发这两个事件:

$('.new_element').keydown(function(e) {
  if (e.keyCode == 13) {
    console.log('enter key pressed');
    $('.old_element').dblclick();
    $('.old_element').trigger(e);
  }
});

控制台日志'按下了键'但事件没有任何反应。任何的想法?我应该使用Dojo事件处理程序吗?

谢谢你的帮助

答案

好的,现在,我使用以下代码进行双击。它运作良好。

$('new_element').dblclick(function(){$('old_element')[0].dispatchEvent(new MouseEvent('dblclick', {bubbles: true}));});

IFor键盘事件处理程序,我使用了以下代码。它适用于转义键,但是Enter键的dispatchEvent没有按预期触发回车键。有任何想法吗?

  $('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;
}

});

以上是关于触发.dblclick()不起作用(Dojo问题?)的主要内容,如果未能解决你的问题,请参考以下文章

在页面内部内容后添加或触发事件

DOJO:DataGrid 增量加载不起作用

Dojo 功能在 IE8 上不起作用

Dojo EnhancedGrid 嵌套排序不起作用

dojo - 模板中的单击事件不起作用

Dojo onCellDblClick 功能不起作用