J'ai rencontré un problème très difficile aujourd'hui. Lorsque je vérifiais une zone de saisie, la logique métier de mon projet était que lorsque je sélectionnais une option spécifique d'une sélection, je devais afficher une zone de saisie, mais si. l'utilisateur ne fait rien, une boîte d'avertissement doit apparaître pour que l'utilisateur puisse saisir. Après avoir saisi, je masquerai l'entrée ici.
Par conséquent, le problème suivant se pose. Lorsque la zone de saisie est affichée, elle doit automatiquement obtenir le focus. À ce stade, j'utilise
document.getElementById('id').focus();
Eh bien, je je l'ai essayé et ça a fonctionné. Très bien, je n'ai pas pu m'empêcher d'être heureux, c'est fait !
Mais Dieu n'est pas aussi bon que l'homme. Lorsque je l'ai testé avec Firefox, c'était terminé lorsque l'entrée était affichée pour la première fois, mais ensuite lorsque j'ai fermé la boîte de rappel d'alerte. , L'entrée ne parvient pas à se concentrer, embarras !
Le problème est difficile et je n'en connais pas la raison, alors j'ai fait une petite recherche sur les solutions des experts sur Internet et j'ai trouvé l'astuce suivante, je l'ai essayée et ça a très bien fonctionné !
Après alerte, copiez l'original
document.getElementByIdx('id').focus();
Remplacer par
window.setTimeout(function () { document.getElementById('id').focus();}, 0
Cool, problème résolu !
setTimeout signifie exécuter l'expression précédente après avoir retardé le temps spécifié après le chargement. Bien sûr, ici, la fonction est exécutée après un délai de 0 ms.
Bien que je viens de résoudre ce problème, je ne sais toujours pas pourquoi il peut être résolu dans Firefox. Si quelqu'un le sait, laissez-moi un message afin que je puisse en tirer des leçons, je lui en serais très reconnaissant !