gpt4 book ai didi

javascript - 具有最大行数和每行最大字符数的文本区域

转载 作者:行者123 更新时间:2023-11-30 14:21:55 24 4
gpt4 key购买 nike

我面临一个问题,我需要开发 textarea,其中行数必须为 10,每行最大字符 - 15。一旦输入第 16 个字符,它必须移动到下一行。

此外,我们不能输入超过 10 行。这就是我想要做的。

Onchange 监听器。我试图限制用户输入 15 个字符,但它没有发生。下面是我的代码。任何建议都会有所帮助。

Ext.create('Ext.form.FormPanel', {
title : 'Sample TextArea',
width : 400,
bodyPadding: 10,
renderTo : Ext.getBody(),
items: [{
xtype : 'textareafield',
grow : true,
name : 'message',
fieldLabel: 'Message',
anchor : '100%',
listeners : {
change : function(val,b){
debugger;
var text = val.getValue();
var lines = text.split(/(\r\n|\n|\r)/gm);
for (var i = 0; i < lines.length; i++) {
if (lines[i].length > 10) {
lines[i] = lines[i].substring(0, 10);
}
}
text = lines.join('');
//alert(val.value)
}
}
}]
});

这里我要求每行的字符数,行数是文本区域。

最佳答案

作为免责声明,这种类型的解决方案(关于更改监听器)容易出现复杂的问题:有很多方法可以输入内容,例如将内容拖放到文本字段中、复制/粘贴等。但是这里是一个以某种方式工作的解决方案,带有一些评论:

Ext.create('Ext.form.FormPanel', {
title : 'Sample TextArea',
width : 400,
bodyPadding: 10,
renderTo : Ext.getBody(),
items: [{
xtype : 'textareafield',
grow : true,
name : 'message',
fieldLabel: 'Message',
anchor : '100%',
numLines : 15,
numCharsPerLine: 10,
listeners : {
change : function(val,b){
var text = val.getValue();
//console.log(text);
var lines = text.split(/\r\n|\n|\r/);
for (var i = 0; i < lines.length; i++) {
if (lines[i].length > this.numCharsPerLine) {
lines[i] = lines[i].substring(0, this.numCharsPerLine);
}
}
if(lines.length < this.numLines && lines[lines.length-1].length == this.numCharsPerLine) lines[lines.length-1] += "\n" ;
lines = lines.slice(0,this.numLines); // limit line number
text = lines.join('\n');
//console.log(text);
this.setRawValue(text)
//alert(val.value)
}
}
}]
});

关于javascript - 具有最大行数和每行最大字符数的文本区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52613043/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com