我有一个Ext JS TextArea。在这里,我希望将每行的字符限制在15个字符以内,并且总行数不应超过10个。
我在这里要做的是
function(){
var myValue = this.getValue();
var myValueData = myValue.split(/\r*\n/);
myValueData.length = 10;
}
理想情况下,它应该省略第10行之后的所有行,但并没有发生这种情况。另外,如何限制每行最多15个字符?
发布于 2018-07-28 03:01:51
你可以试一试,虽然不是很完美,但应该是可行的。
也许使用更改侦听器,覆盖组件上的setValue或setRawValue函数会更好。
https://fiddle.sencha.com/#view/editor&fiddle/2js1
{
xtype: 'textareafield',
grow: true,
name: 'message',
fieldLabel: 'Message',
anchor: '100%',
listeners: {
change: function (cmp, newVal, oldVal) {
var arrayForEachLine = newVal.split(/\r\n|\r|\n/g);
var newVal = [];
Ext.Array.each(arrayForEachLine, function (line, index) {
if (line.length >= 10) {
offset = line;
while (offset.length > 0) {
newVal.push(offset.substring(0, 10));
offset = offset.substring(10);
}
} else {
newVal.push(line);
}
if (index === 10) return false;
if (newVal.length >= 10) {
newVal = newVal.slice(0, 10);
return false;
}
});
cmp.suspendEvent('change');
cmp.setValue(newVal.join('\n'));
cmp.resumeEvent('change');
}
}
}
发布于 2018-07-27 03:22:15
这可以通过使用change listener来实现。我已经创建了一个demo (fiddle)。请看一下小提琴,因为那里的代码很整洁,也有注释。请看下面我的更改监听器代码:
listeners: {
change: function () {
var myValue = Ext.getCmp('myField').getValue();
var lines = myValue.split("\n");
if (lines.length > 10) {
alert("You've exceeded the 10 line limit!");
Ext.getCmp('myField').setValue(textAreaValue);
} else { //if num of lines <= 10
for (var i = 0; i < lines.length; i++) { /
if (lines[i].length > 15) { /
alert("Length exceeded in line " + (i+1));
Ext.getCmp('myField').setValue(textAreaValue);
} else if (lines[i].length <= 15 && i == lines.length - 1) {
textAreaValue = myValue;
}
}
}
}
}
如果此答案解决了您的问题,请将此答案标记为一个答案,因为这也将在将来帮助其他人。如果这个答案有任何错误,请在评论中让我知道。如果有什么问题,我很抱歉,因为我不是extjs专家。但我还是试过了。
发布于 2018-07-27 21:43:25
要限制文本区域的字符长度,可以使用以下属性maxlength。
<textarea maxlength="50">
截断截断字符串或数字
text_truncate = function(str, length, ending) {
if (length == null) {
length = 100;
}
if (ending == null) {
ending = '...';
}
if (str.length > length) {
return str.substring(0, length - ending.length) + ending;
} else {
return str;
}
};
你可以这样调用它
text_truncate(yourContentToTruncate,15);
https://stackoverflow.com/questions/51491767
复制相似问题