我有一个Ext JS TextArea.我想在每行中将我的字符限制为15个字符,总行数不应超过10个.
我在这里要做的是
function(){
var myValue = this.getValue();
var myValueData = myValue.split(/\r*\n/);
myValueData.length = 10;
}
Run Code Online (Sandbox Code Playgroud)
理想情况下,它应该省略第10行之后的所有行,但不会发生.另外如何限制每行最多15个字符?
您可以尝试一下,虽然不完美,但应该可行。
也许它会更好,而不是使用更改侦听器,覆盖组件上的 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');
}
}
}
Run Code Online (Sandbox Code Playgroud)