1
在我們ExtJs5.1.2項目,斷行線相適應,我們希望有一個textarea的,打破了換行的行之後X輸入的字符。文本區域,其在X字符
例如行在輸入12345時最多需要5個字符長度,並且在輸入6時在textarea中輸入6的新行。
12345
6
因此,當用戶連續地輸入文本,文本被autoamtically適於5.
12345
67890
12345
6...
我嘗試過的線路長度下面延伸textarea的,但它不工作如預期。 函數adaptLines
將該值相應地格式化爲行長度爲5,但不會將其填充到textarea本身。
Ext.define('LineAdaptTextField', {
extend: 'Ext.form.field.TextArea',
_removeNewLineRegEx: /\n/g,
_lineAdaptRegEx: /(.{1,5})/g,
// called when text is entered, but no effect of value in the textfield
processRawValue: function(value) {
value = this.callParent([value]);
var processed = this.adaptLines(value);
console.info('processRawValue("%s") to "%s"', value, processed);
return processed;
},
// never be called when entering text
transformRawValue: function(value) {
value = this.callParent([value]);
var transformed = this.adaptLines(value);
console.info('transformRawValue("%s") to "%s"', value, transformed);
return transformed;
},
// is called but no effect on the textfield
valueToRaw: function (value) {
value = this.callParent([value]);
var rawValue = this.adaptLines(value);
console.info('valueToRaw("%s") to "%s"', value, rawValue);
return rawValue;
},
// never be called when entering text
rawToValue: function (rawValue) {
rawValue = this.callParent([rawValue]);
var value = this.adaptLines(rawValue);
console.info('valueToRaw("%s") to "%s"', rawValue, value);
return value;
},
// add linefeed after 5 characters
adaptLines: function(value){
var noNewLines = value.replace(this._removeNewLineRegEx, '');
return noNewLines.replace(this._lineAdaptRegEx, '$1\n').replace(/\n$/, '');
}
});
爲了解決問題,請參閱Fiddle。
我試過了,它按照你的表述工作,但只有當文本輸入完成後纔會觸發更改事件。因此,用戶可以看到他何時擁有一個密鑰,然後將其格式化。在文本在textarea中可見之前是否有其他可能性來執行格式化? –
對不起,我不認爲這是可能的(不是我的小知識)。因爲如果用戶持有密鑰,那麼即使「rawToValue」函數沒有被調用。根據我的理解,我們只能在用戶輸入密碼後才能處理輸入,而不是在密鑰保存期間。 –