2009-03-26 6 views
4

Je souhaite valider mon formulaire extjs. Lorsque le champ de texte est vide, il doit y avoir une boîte d'alerte et après, notre curseur doit se concentrer sur la zone de texte. J'ai essayé avec le codage ci-dessous. Alert fonctionne bien. mais le curseur ne se concentre pas. Pouvez-vous s'il vous plaît m'aider quelqu'un à se concentrer?Comment mettre en évidence une zone de texte après avoir utilisé extjs Ext.MessageBox.alert

if(Ext.get('first').dom.value=='') 
{ 
    Ext.MessageBox.alert('Status', 'Enter your First Name!'); 
    document.getElementById("first").focus(); 
} 

Répondre

8

Les documentation états que MessageBox est asynchrone:

Notez que la MessageBox est asynchrone. Contrairement à une alerte JavaScript régulière (qui va arrêter l'exécution du navigateur ), montrant un MessageBox ne provoquera pas le code à arrêter. Pour cette raison, si vous avez un code qui ne doit être exécuté qu'après certains commentaires utilisateur de MessageBox, vous devez utiliser une fonction de rappel (voir le paramètre de fonction pour afficher plus de détails ).

Ainsi, votre mise au point() est effectuée immédiatement après l'appel à Ext.MessageBox.alert, et non pas lorsque l'utilisateur le rejette: Lorsque l'utilisateur clique pour fermer l'alerte, la mise au point changera à nouveau.

Vous pouvez utiliser une alerte javascript standard() à la place, synchrone.

+1

je ne reçois pas votre réponse. mais j'ai essayé avec le code de reguler js et Ext.get («premier»). dom.focus() aussi. Mais je ne me trompe pas. –

6
if (Ext.get("first").dom.value == "") { 
    Ext.MessageBox.alert("Status", "Enter your First Name!", function() { 
     Ext.get("first").focus(); 
    }); 
} 
1

Essayez cette


if(Ext.get('first').dom.value=='') 
{ 
    Ext.Msg.alert('Status', 'Enter your First Name!', function(btn, text){ 
      if (btn == 'ok'){ 
       Ext.getCmp('first').focus(true,10); 
      } 
    }); 
} 
Questions connexes