【发布时间】:2019-08-05 15:01:51
【问题描述】:
需要插入链接(替换高亮文本)
想法是 - 选择 lorem - 在输入中键入 href - 然后按 Enter - 设置链接。
问题 - 如果 inpa 具有焦点,则突出显示的文本不会突出显示。
有什么办法吗?
$('#inpa').on('keypress', function(e){
if(e.keyCode == 13){
let a = $('#inpa').val();
let b = window.getSelection().toString();
let ht = "<a href = '" + a + "' target = '_blank'>" + b + "</a>";
document.execCommand('insertHTML', ht);
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='story' id='story'>lorem ipsum</div>
<br>
<input type='text' class='inpa' id='inpa'>
【问题讨论】:
-
不确定如何同时关注两件事...您最好记住选择而不是重新创建选择。
-
@epascarello,类似的功能存在于 SO,当创建一个内部有链接的帖子时
-
是的,在元素获得焦点之前,您存储选择。完成后,您重新创建选择并运行您的代码。范围广泛的库使操作变得容易。
-
@qadenza 您引用的功能似乎是基于
iframe,因为它是一个完全不同的选择上下文。我认为仅使用 JavaScript 是不可能的。一种选择可能是在blur之后设置选择样式,然后在focus上重新选择。如果这是您的选择,我可以尝试为此写一个答案。 -
@andrewgu,请尝试一下,听起来合乎逻辑,但问题可能是如果选择不在父级的末尾或顶部,而是在内部的某个地方
标签: javascript jquery