我有一个自定义网格,一些单元格有一个单元格编辑器,一个 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("");
}
}
}
});
当我关注单元格时,它让我保留了关注单元格之前的值,这要归功于焦点监听器。但是当我失去焦点时,单元格什么也不显示。当我再次单击它时,该值会再次显示并且可以编辑。所以问题是当我失去焦点时,该值无法保持显示在单元格上。我试图模糊事件但没有帮助...
最佳答案
这里的问题是您的 blur
事件。根据 Documentation blur 事件当此 Component 失去焦点时触发。 因此在您的情况下,当您失去焦点时,您的 blur 事件就会触发。正如我在您的模糊事件中看到的那样,您正在设置一些其他值,因此它是空的。
此行导致您的代码出现问题:
else{
a.setValue("");
}
我还创建了一个 fiddler 来理解 blur
和 focus
。
关于javascript - 失去对 form.textfield 的关注后不显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065209/