我现在正在捕捉textarea元素上的鼠标点击事件。
由于我必须在处理事件后停止传播,因此当我们使用中键单击textareas时,将不会像往常一样设置插入符号。但我需要在进行进一步的工作之前设置它,所以我尝试手动调度鼠标事件。
我的代码是:
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 1, origEvt.screenX, origEvt.screenY,
origEvt.clientX, origEvt.clientY, false, false, false, false, 0, null);
origEvt.target.dispatchEvent(evt);
...
此代码尝试模拟在同一位置的同一元素上的左键单击。可以捕获已分派的事件,但是,未设置插入符号。
有人可以指导我怎么做吗?
答案 0 :(得分:1)
伪造事件不会导致发生默认操作。你必须自己复制它们。
在这种情况下,您必须使用selectionStart
和selectionEnd
在textarea上设置输入焦点位置。但是,从鼠标位置获取适当的字符串偏移量会相当棘手。
目前尚不清楚你想要做的目的是什么,但你必须找到另一种解决方法。也许您可以允许默认操作发生,但之后模糊textarea并稍后将其重点关注?如果位置可能在此期间发生变化,您也可以在点击后立即记住selectionStart
/ selectionEnd
属性,以便将焦点设置回任何稍后的位置。