在用户键入时修剪和编辑文本区域的每一行
Trim and edit each line of textarea while user is typing
我正在尝试在用户键入文本区域时逐行验证用户输入的文本区域。具体来说,我想删除尾随空格并将每行限制为 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"));
});
当用户编辑文本区域的最后一行时,它可以完美运行。但是,当脚本验证另一行时,行光标会突然跳到最后一行(请参阅工作 jsfiddle 示例)。
有没有办法防止光标跳跃?我是否需要以不同的方式验证行,或者有没有办法 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();
}
}
检查工作正常的 jsfiddle 链接。
希望这有帮助。
相关文章:
- onkeyup无法动态创建多个文本区域
- FabricJs-限制主对象内添加对象的移动区域
- 文本区域-获取每一行,找到换行符
- 使用VBScript或Javascript从文本框(文本区域)中删除最后一行空/空行
- 如何在文本区域中复制文本的每一行
- 如何使用jquery复制文本区域中的每一行文本
- 如何使用 jQuery 在文本区域中的每一行添加文本
- 通过jQuery在文本区域占位符内新建一行
- 在用户键入时修剪和编辑文本区域的每一行
- 是否可以将光标锁定/聚焦到文本区域的最后一行
- 如何在文本区域中选择(一行或多行)
- 如何检测位置是否位于文本区域中一行的开头
- 到达最后一行时增加文本区域的高度
- 为什么当我试图在html上的文本区域内显示文本时,它会在一行中显示所有内容
- 将文本区域的每一行变成一个链接
- 删除文本区域中的一行
- 如何检测一行何时自动换行到文本区域中?
- 我如何自动完成每一行在文本区域从javascript/jquery的第三个字开始
- 如何仅更改文本区域中的一行
- 文本区域限制字符的每一行在javascript