停止插入符号跳到文本区域底部

Stop caret jumping to bottom of textarea?

本文关键字:文本 区域 底部 插入 符号      更新时间:2023-09-26

我有一个文本区,里面有很多文本,我有代码,当你按Shift+Enter时,它会插入一段文本。然而,目前,一旦发生这种情况,文本就会滚动,这样插入符号就会出现在屏幕底部。

我的插入代码:

$("#body textarea").bind('keydown', function(event) {
    var caret = $("#body textarea").caret();
    if(event.keyCode == 13 && event.shiftKey)
    {
        var text = "[br]"
        insertText("#body textarea", caret.start, caret.end, text, "");
        $("#body textarea").caret(caret.start+(text.length), caret.start+(text.length));
    }
});

有人知道我能做些什么来阻止它将插入符号强制到底部吗?

干杯
BlackWraith

我在stackoverflow.com上发现了同样的问题,并为您制作了样本http://jsfiddle.net/deerua/WAZBQ/

您可以在插入文本后手动设置Caret Position:

请参阅http://blog.vishalon.net/index.php/javascript-getting-and-setting-caret-position-in-textarea/:

function doGetCaretPosition (ctrl) {
    var CaretPos = 0;   // IE Support
    if (document.selection) {
    ctrl.focus ();
        var Sel = document.selection.createRange ();
        Sel.moveStart ('character', -ctrl.value.length);
        CaretPos = Sel.text.length;
    }
    // Firefox support
    else if (ctrl.selectionStart || ctrl.selectionStart == '0')
        CaretPos = ctrl.selectionStart;
    return (CaretPos);
}
function setCaretPosition(ctrl, pos){
    if(ctrl.setSelectionRange)
    {
        ctrl.focus();
        ctrl.setSelectionRange(pos,pos);
    }
    else if (ctrl.createTextRange) {
        var range = ctrl.createTextRange();
    range.collapse(true);
        range.moveEnd('character', pos);
        range.moveStart('character', pos);
        range.select();
    }
}

ctrl是您的textarea元素。

setCaretPosition(document.getElementById("textarea", 0);