我有一个textarea,我正在尝试检查是否有人进入 {{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:在range.setStart(node,start)的DOM异常1;