失去焦点在form.textfield后不显示的值

时间:2017-03-28 09:05:34

标签: javascript extjs celleditorlistener

我有一个自定义网格,一些单元格有一个单元格编辑器,一个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("");
            }
        }
    }
});

当我专注于细胞时,它会让我保持在聚焦细胞之前的价值,这要归功于焦点监听器。但是当我失去焦点时,单元格什么也没显示。当我单击它时,该值再次显示并可以编辑。所以问题是当我失去焦点时,该值不能保持在单元格上显示。我试图模糊事件,但没有帮助...

1 个答案:

答案 0 :(得分:2)

这里的问题是您的blur事件。每个Documentation 模糊事件当此组件失去焦点时触发。因此,在您失去焦点的情况下,模糊事件会触发。正如我在你的模糊事件中看到的那样你正在设置一些其他值,因此它将变为空。

此行导致代码出现问题:

else{
     a.setValue("");
    }

我还创建了一个小提琴手来理解blurfocus

Fiddle