2010-01-19 10 views
1

J'essaie de faire en sorte que lorsqu'une certaine valeur est placée dans une zone de texte, le focus reste sur la zone de texte (et une alerte sera affichée en production). J'essaye de faire fonctionner ceci dans Firefox 3.5.7 sans la chance.Mettre l'accent sur une zone de texte dans l'événement onchange

Comment puis-je faire en sorte qu'une zone de texte ait une certaine valeur à onchange qu'elle reste concentrée/se concentre sur la zone de texte?

Un exemple concret est à http://jsbin.com/ipina

<body> 
Enter your name: <input type="text" name="fname" id="fname" onchange=" 
    if(this.value=='foo'){ 
    this.select(); 
    this.focus(); 
    } 
    " /> 
</body> 

Aussi, je ne reçois pas d'erreurs ou d'avertissements javascript dans la console d'erreur sur l'exécution de ce code.

+1

Êtes-vous essayer de forcer l'accent à rester sur cette zone de texte? N'aurait-il pas le focus si l'utilisateur le change? – brian

+0

Non, l'événement onchange ne sera pas appelé (dans Firefox et IE pour les zones de texte) tant que le contrôle n'aura pas le focus – Earlz

Répondre

1

Selon Javascript onchange different in IE and FireFox je besoin de mettre l'accent après l'événement onchange se produit, donc je devais retrouver avec quelque chose comme ceci:

Enter your name: <input type="text" name="fname" id="fname" onblur=" 
    if(this.value=='foo'){ 
    alert('bah'); 
    setTimeout('document.getElementById(\'fname\').focus();document.getElementById(\'fname\').select();',0); 
    } 
    " /> 

Et aussi je devais l'attraper lorsque l'accent était perdu, pas nécessairement quand le texte a été changé, donc j'ai dû utiliser onblur au lieu de onchange.

en direct: http://jsbin.com/ofeva

2

Lorsque l'événement onchange est déclenché, l'utilisateur se concentre sur la zone de texte. Peut-être que vous voudrez peut-être utiliser l'événement blur pour se recentrer sur la zone de texte si la valeur est 'foo'.

Si vous avez besoin de résultats instantanés, vous devez utiliser onkeyup.

<body> 
Enter your name: <input type="text" name="fname" id="fname" onkeyup=" 
    if(this.value=='foo'){ 
    this.select(); 
    this.focus(); 
    } 
    " /> 
</body> 
+0

J'ai besoin de saisir la valeur entière avant de pouvoir évaluer si la zone de texte doit rester focalisée ou non. – Earlz

Questions connexes