Comment faire javascript focus() la méthode de travail dans l'événement onBlur pour l'entrée de la zone de texte?
pour moi, javascript focus() la méthode fonctionne bien si je l'utilise avec un bouton et de l'événement onClick, mais avec onBlur à partir d'une zone de texte, il n'est pas de travail.Quelqu'un peut-il me guider sur ce?
<html>
<head>
<script type="text/javascript">
function displayResult()
{
var inp1=document.getElementById("text1").value;
var inp2=inp1.length;
if(inp2==0)
{
alert("Field 1 cannot be left Empty");
//document.getElementById("text1").value="";
document.getElementById("text1").focus();
}
}
</script>
</head>
<body>
<input type="text" name="text1" id="text1" onBlur="displayResult();"/>
<input type="text" name="yext2" id="text2" />
</body>
</html>
- ajouter un morceau de votre code de la façon dont vous êtes en train de le faire.
- Bonjour Tasneem, bienvenue sur StackOverflow. Veuillez fournir une petit exemple: et un extrait de votre code démonstration votre problème.
- Il y a une possibilité que, même si vous avez réussi à la demande de l'accent (de retour, je suppose), le onBlur() la méthode est appelée avant que le focus est réellement passé sur; cela signifie qu'une fois votre demande de concentrer terminé, le système va alors et se termine le onBlur() de la fonctionnalité de donner le focus... après avoir soigneusement la demande. Une possible solution de contournement est d'avoir onBlur() le démarrage d'un timer court, disons 1000 ms, et en ce que la minuterie gestionnaire de définir le focus. Cela devrait donner suffisamment de temps pour terminer loin de donner le focus, mais à empêcher l'utilisateur de faire quelque chose ailleurs.
Vous devez vous connecter pour publier un commentaire.
Depuis le temps que vous avez posté la question, j'ai testé votre problème pendant une heure à l'aide de différentes techniques. Maintenant, il m'apparaît que par le biais d'un événement sur une entrée, vous ne pouvez pas se concentrer sur elle-même.
Encore, Il y a une autre solution possible. Vous pouvez appeler
displayResult()
lorsque le formulaire est soumis, vérifier sitext1
est vide et annuler soumettre si elle est vide et mis l'accent surtext1
. J'ai réécrit le code pour vous.Espère que ça aide...
Que la paix soit sur vous ...
Il n'est pas possible de réappliquer le focus à un élément lors de son flou les déclencheurs d'événement. Utiliser un chronomètre avec un intervalle de valeur de
0
de retarder l'appel à l'action jusqu'après:Vous devez définir peu de retard dans la mise au point du champ.
setTimeout(function(){champ.focus()}, 10);
comme :
Je vous conseille de ne pas utiliser onblur dans la validation des entrées si vous afficher un message de notification des alertes. C'est assez ennuyeux , il produit sans fin alertes .
Valider le formulaire événement onsubmit.
setTimeout()
ne fonctionne pas pour moi, avec 0 ou 10 ou 100 msec. 🙁