0

我有一个文本区域,我正在尝试检查是否有人输入{{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);

4

1 回答 1

0

不确定这是否是您的意思http://jsfiddle.net/sailorob/J6PVJ/

于 2012-08-18T21:33:00.023 回答