绑定“Ctrl + Alt + L”将一些预定义的字符串插入到焦点文本区域?

时间:2010-05-04 21:15:37

标签: javascript jquery

是否可以绑定 Ctrl + Alt + L 将预定义的字符串插入 focus textarea到光标位置?例如,我在textarea中键入一些文本,然后我按 Ctrl + Alt + L 并且<a href="" title=""></a>是插入当前光标位置。

2 个答案:

答案 0 :(得分:1)

是。使用keydown事件和Stack Overflow上浮动的其中一个插入符号位置的文本区域函数。对于密钥检测,请注意我必须使用keydown事件而不是keypress事件(这应该用于检测已键入的字符),因为IE不会触发Ctrl + Alt + L的keypress个事件,因此在不同的映射键盘上可能会出错。对于光标位置,我从this answer复制并使用了类似的东西。请参阅以下答案,以便在IE中讨论此问题:

Caret position in textarea, in characters from the start Is there an Internet Explorer approved substitute for selectionStart and selectionEnd?

另外,请注意,在执行此操作后,您可能需要将光标定位在合理的位置,我的代码不会覆盖。

function getCaret(el) {
    if ("selectionStart" in el) {
        return el.selectionStart;
    } else if (document.selection) {
        el.focus();

        var r = document.selection.createRange();
        if (r == null) {
            return 0;
        }

        var re = el.createTextRange(), rc = re.duplicate();
        re.moveToBookmark(r.getBookmark());
        rc.setEndPoint("EndToStart", re);

        return rc.text.length;
    }
    return 0;
}

var textArea = document.getElementById("yourTextarea");
textArea.onkeydown = function(evt) {
    evt = evt || window.event;
    if (evt.ctrlKey && evt.altKey && evt.keyCode == 76) {
        var cursorPos = getCaret(this);
        this.value = this.value.slice(0, cursorPos)
                   + '<a href="" title=""></a>'
                   + this.value.slice(cursorPos)
        return false; // Prevent any default browser behaviour
    }
};

答案 1 :(得分:0)

我不确定Ctrl-Alt-L,但有明确的方法可以做到这一点。例如:

<textarea name="MyText" id="MyText" onKeyPress="handleKey(this);" 
onKeyDown="CaptureKeyDown(this);"></textarea>

<script>
    function handleKey(ta) {
        if (event.keyCode == 12) { // Ctrl-L
            // Do your insert here
        }
    }
</script>

比这更复杂。在http://www.boltbait.com/htmleditor/查看这个HTML编辑器(用HTML和JavaScript编写)(源代码可以在那里下载)。

编辑:哎呀!我没有看到你的jquery标签。