我有一个包含大量文本的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
答案 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);