首页 > 解决方案 > 如何限制textarea中每行的字符数?

问题描述

我有一个 Ext JS TextArea。在那里,我想将我的字符限制为每行 15 个字符,总行数不应超过 10。

我想在这里做的是

function(){
    var myValue = this.getValue();
    var myValueData = myValue.split(/\r*\n/);
    myValueData.length = 10;    
}

理想情况下,它应该省略第 10 行之后的所有行,但没有发生。另外如何限制每行最多 15 个字符?

标签: javascriptextjs

解决方案


您可以尝试一下,虽然不完美,但应该可以。

也许使用更改侦听器,覆盖组件上的 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');
                    }
                }
            }

推荐阅读