我有一个自定义网格,一些单元格有一个单元格编辑器,一个Ext.form.TextField,以便修改单元格的值。 以下是如何定义TextField:
var labelTextEditor = new Ext.form.TextField({
allowBlank: false,
maxLength: 256,
id: "labelTextEditor",
maxLengthText: Label.conf.ui.javascript.TooLongText,
validateOnChange: true,
validator: function(value) {
console.log(value);
if (value == "" && value.trim() == "") {
return formatMessage(Label.conf.ui.supv.LabelMandatory);
} else
return true;
},
msgTarget: 'under',
listeners: {
focus( a, event, eOpts ){
var rowIndex = customFieldGrid.getSelectionModel().getCurrentPosition().row;
if(rowIndex !== undefined && rowIndex !== null){
a.setValue(view.listOfServiceDefinition[0].customFields[rowIndex].labels[userLanguagePrefix]);
}
},
blur(a, event, eOpts){
var cellValue = a.getValue();
if(cellValue !== undefined && cellValue !== null){
a.setValue(cellValue);
}else{
a.setValue("");
}
}
}
});
当我专注于细胞时,它会让我保持在聚焦细胞之前的价值,这要归功于焦点监听器。但是当我失去焦点时,单元格什么也没显示。当我单击它时,该值再次显示并可以编辑。所以问题是当我失去焦点时,该值不能保持在单元格上显示。我试图模糊事件,但没有帮助...
答案 0 :(得分:2)
这里的问题是您的blur
事件。每个Documentation 模糊事件当此组件失去焦点时触发。因此,在您失去焦点的情况下,模糊事件会触发。正如我在你的模糊事件中看到的那样你正在设置一些其他值,因此它将变为空。
此行导致代码出现问题:
else{
a.setValue("");
}
我还创建了一个小提琴手来理解blur
和focus
。