Javascript 在用户键入时修剪和编辑文本区域的每一行
我试图在用户键入文本区域时逐行验证用户输入的文本区域。具体来说,我想删除尾随空格,并将每行限制为10个字符 目前,我使用以下jQuery代码: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
$("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();
}
}
检查工作状态
希望这能有所帮助。做这件事有点麻烦。用例是什么?细节越多越好,谢谢!正是我要找的!