javascript - 失去对 form.textfield 的关注后不显示值

标签 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("");
            }
        }
    }
});

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

最佳答案

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

此行导致您的代码出现问题:

else{
     a.setValue("");
    }

我还创建了一个 fiddler 来理解 blurfocus

Fiddle

关于javascript - 失去对 form.textfield 的关注后不显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43065209/

相关文章:

javascript - 从 URL 获取域名问题

javascript - AngularJs:如何像 ng-init 那样对多个变量执行 ng-repeat?

javascript - 在javascript错误中在图像上打印文本

javascript - 使用 Math.random() 获得 50/50 机会的正确函数

javascript - "href:tel"链接无法在 IOS 中打开警报 View

javascript - ExtJS Dashboard 丢失列和其他问题

javascript - 绑定(bind)按钮在 Ext JS 中不起作用

jsf - 更新整个 <p :dataTable> on complete of <p:ajax event ="cellEdit">