2017-03-28 1 views
1

J'ai une grille personnalisée et certaines cellules ont un éditeur de cellules, un Ext.form.TextField, afin de modifier la valeur de la cellule. Voici comment est défini le TextField:Valeur non affichée après avoir perdu le focus sur form.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(""); 
      } 
     } 
    } 
}); 

Lorsque je me concentre sur la cellule, il me conserve la valeur qui était là avant de se concentrer sur la cellule, grâce à l'auditeur de mise au point. Mais quand je perds le focus, la cellule n'affiche rien. Quand je clique dessus, la valeur est affichée à nouveau et peut être éditée. Donc, le problème est que lorsque je perds le focus, la valeur ne peut pas être affichée sur la cellule. J'ai essayé de brouiller l'événement mais n'ai pas aidé ...

Répondre

2

Problème voici votre événement blur. Comme Per Documentationl'événement de flou se déclenche lorsque ce composant perd le focus. Ainsi, dans votre cas, lorsque vous perdez la mise au point, votre événement de flou est en train de se déclencher. Et comme je peux le voir dans votre événement flou Vous établissez d'autres valeurs, pour cela, il vient comme vide.

Cette ligne est à l'origine d'un problème dans votre code:

else{ 
    a.setValue(""); 
    } 

J'ai aussi créé un Fiddler pour comprendre blur et focus.

Fiddle