Javascript 在用户键入时修剪和编辑文本区域的每一行

Javascript 在用户键入时修剪和编辑文本区域的每一行,javascript,jquery,html,textarea,Javascript,Jquery,Html,Textarea,我试图在用户键入文本区域时逐行验证用户输入的文本区域。具体来说,我想删除尾随空格,并将每行限制为10个字符 目前,我使用以下jQuery代码: $("textarea").on('input',function(){ var trimmedInput = $.map($(this).val().split("\n"), function(line){ return $.trim(line).substring(0,10); }); $("textare

我试图在用户键入文本区域时逐行验证用户输入的文本区域。具体来说,我想删除尾随空格,并将每行限制为10个字符

目前,我使用以下jQuery代码:

$("textarea").on('input',function(){

    var trimmedInput = $.map($(this).val().split("\n"), function(line){
        return $.trim(line).substring(0,10);
    });

    $("textarea").val(trimmedInput.join("\n"));

});
当用户编辑文本区域的最后一行时,它可以完美地工作。但是,当脚本验证另一行时,行光标突然跳到最后一行(请参见)

有没有办法防止光标跳转?我是否需要以不同的方式验证行,或者jQuery是否有办法记住行光标所在的位置,然后将其放回原处

 $("textarea").on('input',function(){
    var currentPosition = this.selectionStart;
    var trimmedInput = $.map($(this).val().split("\n"), function(line){
        return $.trim(line).substring(0,10);
    });

    $("textarea").val(trimmedInput.join("\n"));
     setSelectionRange(this, currentPosition, currentPosition);

});

function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}
检查工作状态


希望这能有所帮助。

做这件事有点麻烦。用例是什么?细节越多越好,谢谢!正是我要找的!