我有一个文本区域,我正在尝试检查是否有人输入{{link 我可以弹出一个模式让他们完成一些信息。
我现在的情况是,如果有人输入字母 k,它将返回 6 个字符,然后确定文本是否匹配{{link
但是我在设置范围的起点和终点时遇到问题。我认为问题在于识别节点,但我不确定。
主要是当有人输入字母“k”时,我只是想回去检查他们是否输入了:{{link ,如果他们输入了,它会启动一个模态。
这就是我在尝试设置范围和获取选择的部分不起作用的部分。
$(document).on('keyup', 'textarea', function(e) {
if (e.keyCode == 75) {
var end = $('textarea').getCaretPosition();
var start = end - 6;
var node = $(this).get(0);
var range = document.createRange();
range.setStart(node, start);
range.setEnd(node, end);
var selection = range.toString();
if( selection == '{{link' ){
// we'll launch a modal here
}
}
});
$.fn.getCaretPosition = function() {
var el = $(this).get(0);
var pos = 0;
if ('selectionStart' in el) {
pos = el.selectionStart;
} else if ('selection' in document) {
el.focus();
var Sel = document.selection.createRange();
var SelLength = document.selection.createRange().text.length;
Sel.moveStart('character', -el.value.length);
pos = Sel.text.length - SelLength;
}
return pos;
}
这会产生错误:未捕获的错误:INDEX_SIZE_ERR: DOM Exception 1 at range.setStart(node, start);