【发布时间】:2017-09-12 13:58:02
【问题描述】:
我有几个具有相同类名的输入框。我希望能够获取当前突出显示的文本并确切知道该文本在哪个输入框中。我当前的方法是这样的:
$(document).on("mouseup", ".element", function(){
var text = "";
var activeEl = document.activeElement;
var activeElTagName = activeEl ? activeEl.tagName.toLowerCase() : null;
if (
(activeElTagName == "textarea") || (activeElTagName == "input" &&
/^(?:text|search|password|tel|url)$/i.test(activeEl.type)) &&
(typeof activeEl.selectionStart == "number")
) {
text = activeEl.value.slice(activeEl.selectionStart, activeEl.selectionEnd);
} else if (window.getSelection) {
text = window.getSelection().toString();
}
});
这给了我当前的文本选择,我可以调用$(this) 来访问突出显示文本所在的元素。
但是,我当前方法的问题是,如果您开始单击然后在文本框外拖动,例如在文本框左边缘之外,您将在框中突出显示文本,但事件会不注册,因为鼠标单击在输入字段范围之外结束。我该如何解决这个问题?
【问题讨论】:
标签: javascript jquery