停止插入跳到textarea的底部?

时间:2012-02-07 23:24:11

标签: javascript jquery html textarea

我有一个包含大量文本的textarea,我有代码,这样当你按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

2 个答案:

答案 0 :(得分:2)

我在stackoverflow.com遇到了同样的问题,并为您制作样品 http://jsfiddle.net/deerua/WAZBQ/

答案 1 :(得分:0)

插入文字后,您可以手动设置插入位置:

请参阅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);