Javascript 以编程方式增加textArea的大小
我可以根据行数增加textarea的大小,但如果我没有按enter键,只需输入文本,则它不起作用,textarea的大小也不起作用。看下面的小提琴Javascript 以编程方式增加textArea的大小,javascript,jquery,html,Javascript,Jquery,Html,我可以根据行数增加textarea的大小,但如果我没有按enter键,只需输入文本,则它不起作用,textarea的大小也不起作用。看下面的小提琴 $(“textarea”)。在(“keyup”上,函数($event){ this.rows=(this.value.split(“\n”).length | 1); var thisTextArea=$event.currentTarget; 如果(thisTextArea.value.split(“\n”).length>5){ thisTex
$(“textarea”)。在(“keyup”上,函数($event){
this.rows=(this.value.split(“\n”).length | 1);
var thisTextArea=$event.currentTarget;
如果(thisTextArea.value.split(“\n”).length>5){
thisTextArea.rows=(thisTextArea.value.split(“\n”).length);
$(thisTextArea).css(“溢出”、“隐藏”);
如果(thisTextArea.rows>15){
$(thisTextArea).css(“溢出-y”,“滚动”);
}
}
否则{
thisTextArea.rows=6;
$(thisTextArea).css(“溢出”、“隐藏”);
}
});代码>
$(文档).ready(函数(){
$('textarea').elastic();
});代码>
演示-弹性
填充文本区域以使其增长
当你用文本填充它时,这个文本区域将会增长。只需在其中再键入几个单词,您就会看到。
$(文档).ready(函数(){
$('textarea').elastic();
});代码>
演示-弹性
填充文本区域以使其增长
当你用文本填充它时,这个文本区域将会增长。只需在其中再键入几个单词,您就会看到。
更新html
<textarea rows="5" cols="15"></textarea>
使用这个js代码段
$("textarea").on("keyup", function($event) {
var textarea = $(this);
var text = textarea.val();
var lines = text.split(/\r*\n/);
var cols = textarea.attr('cols');
var TOTAL_LINES = 0;
for (var i = 0; i < lines.length; i++) {
TOTAL_LINES += Math.ceil(lines[i].length/cols);
}
console.log(TOTAL_LINES);
if (TOTAL_LINES > 5) {
textarea.attr('rows', TOTAL_LINES);
textarea.css("overflow-y","hidden");
if (TOTAL_LINES > 15) {
textarea.css("overflow-y","scroll");
}
} else {
textarea.attr('rows', 6);
textarea.css("overflow-y","hidden");
}
});
$(“textarea”)。在(“keyup”上,函数($event){
var textarea=$(此值);
var text=textarea.val();
变量行=text.split(/\r*\n/);
var cols=textarea.attr('cols');
var总行数=0;
对于(变量i=0;i5){
textarea.attr('行',总行数);
css(“overflow-y”、“hidden”);
如果(总行数>15){
css(“overflow-y”、“scroll”);
}
}否则{
textarea.attr('rows',6);
css(“overflow-y”、“hidden”);
}
});
更新html
<textarea rows="5" cols="15"></textarea>
使用这个js代码段
$("textarea").on("keyup", function($event) {
var textarea = $(this);
var text = textarea.val();
var lines = text.split(/\r*\n/);
var cols = textarea.attr('cols');
var TOTAL_LINES = 0;
for (var i = 0; i < lines.length; i++) {
TOTAL_LINES += Math.ceil(lines[i].length/cols);
}
console.log(TOTAL_LINES);
if (TOTAL_LINES > 5) {
textarea.attr('rows', TOTAL_LINES);
textarea.css("overflow-y","hidden");
if (TOTAL_LINES > 15) {
textarea.css("overflow-y","scroll");
}
} else {
textarea.attr('rows', 6);
textarea.css("overflow-y","hidden");
}
});
$(“textarea”)。在(“keyup”上,函数($event){
var textarea=$(此值);
var text=textarea.val();
变量行=text.split(/\r*\n/);
var cols=textarea.attr('cols');
var总行数=0;
对于(变量i=0;i5){
textarea.attr('行',总行数);
css(“overflow-y”、“hidden”);
如果(总行数>15){
css(“overflow-y”、“scroll”);
}
}否则{
textarea.attr('rows',6);
css(“overflow-y”、“hidden”);
}
});
html
<textarea rows="5"class='autoExpand'></textarea>
html
<textarea rows="5"class='autoExpand'></textarea>
我终于这样做了。
请参阅以下链接
$("textarea").on("keyup",function($event) {
var textarea = $event.currentTarget;
if (textarea.scrollHeight > 305) {
textarea.style.height = "1px";
textarea.style.height = (3+textarea.scrollHeight)+"px";
$(textarea).css("overflow-y","scroll");
}
else if (textarea.scrollHeight > 105){
$(textarea).css("overflow-y","hidden");
textarea.style.height = "1px";
textarea.style.height = (3+textarea.scrollHeight)+"px";
}
});
$("textarea").on("focus",function($event) {
var textarea = $event.currentTarget;
if (textarea.scrollHeight > 105) {
//textarea.style.height = textarea.scrollHeight;
$(textarea).css("height",textarea.scrollHeight);
if(textarea.scrollHeight > 305) {
$(textarea).css("overflow-y","scroll");
}
}
$( "textarea" ).unbind("focus");
});
我终于这样做了。
请参阅以下链接
$("textarea").on("keyup",function($event) {
var textarea = $event.currentTarget;
if (textarea.scrollHeight > 305) {
textarea.style.height = "1px";
textarea.style.height = (3+textarea.scrollHeight)+"px";
$(textarea).css("overflow-y","scroll");
}
else if (textarea.scrollHeight > 105){
$(textarea).css("overflow-y","hidden");
textarea.style.height = "1px";
textarea.style.height = (3+textarea.scrollHeight)+"px";
}
});
$("textarea").on("focus",function($event) {
var textarea = $event.currentTarget;
if (textarea.scrollHeight > 105) {
//textarea.style.height = textarea.scrollHeight;
$(textarea).css("height",textarea.scrollHeight);
if(textarea.scrollHeight > 305) {
$(textarea).css("overflow-y","scroll");
}
}
$( "textarea" ).unbind("focus");
});
我不想放额外的js文件。你为什么不简单地使用div
或其他属性为contenteditable='true'
的标记?我不想放额外的js文件。你为什么不简单地使用div
或其他属性为contenteditable='true'
的标记?它显示滚动,文本正在向上移动而不是文本区域正在扩展。请下载并运行它,因为脚本未加载它正在显示滚动,文本正在向上移动而不是文本区域正在扩展。请下载并运行它,因为当我们在不按Enter键的情况下输入一长行文字时,脚本不会加载相同的问题。请再次检查链接并按文本更长的时间。已测试按至少10行它正在计算滚动高度并根据它按行增加高度。$(文档)。一(当我们在不按Enter键的情况下输入一个长行文字时,它是打开的或一个?相同的问题。它不起作用。再次检查链接并按文本更长的时间。它已测试按至少10行它正在计算滚动高度并根据它逐行增加高度。$(文档)。一个(它是开的还是一个?问题是我们不能计算自动换行符。要解决这个问题,你需要将cols属性设置为textarea,并将textarea的Device charecters设置为列数。检查这个提琴,它工作正常,但当行数超过时第一行变为隐藏,并再次自动显示。如果字符太大,它将继续显示。)在小于列数的字符中…?问题是我们无法计算自动换行。要解决此问题,您需要将cols属性设置为textarea,并将textarea的字符数设置为列数。检查此小提琴是否正常工作,但当行数超过时,第一行变为隐藏,并再次自动显示。如果字符太大,它包含的字符数小于列数。。。?