Javascript - setzen Sie den Fokus nach der alert-Meldung
Ich bin tryng zu konzentrieren, auf das gleiche element, wenn die Validierung fehlschlägt. Hier mein HTML-code :
<input
id="potatoes" name="potatoes" value="" type="text" class="tooltip"
onblur="Validate('potatoes')" autocomplete='off'>
und hier ist mein javascript code :
function Validate(id) {
var errors = {
potatoes : 'enter potatoes',
hamburgers : 'enter'
};
if (document.getElementById(id).value === '') {
if (id in errors) {
alert(errors[id]);
//setTimeout(function(){document.getElementById(id).focus();}, 1);
}
}
}
Habe ich versucht, den Fokus mit .focus () - Methode, aber es funktioniert nicht. Ich habe gelesen, dass es möglicherweise abhängen, "onblur" in HTML, wenn ich rufe meine Funktion Validate(), also habe ich versucht es zu ändern aber nichts funktionierte bis jetzt.
- mögliche Duplikate von Wie, um den Fokus() nach einem alert()?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es hier ein problem. Dieser code wird in der Schleife. Wenn 'focus' ausgelöst wird, wird die Funktion Validate erneut aufgerufen wird, zeigt ein anderes Alarm-dialog.
Dass ein funktionierenden code
HTML
<input id="potatoes" name="potatoes" value="" type="text" class="tooltip" onblur="Validate(this)" autocomplete='off'>
Javascript
In der html-ich bin vorbei diese, ich bin übergeben Sie das element und in der Validate-Funktion können Sie Zugriff auf die id nur zum telefonieren
Für das focus-problem (verursacht durch ein loop-problem) wie Sie sehen können ich bin mit einem Validierung variable, um zu wissen, Wann ist die überprüfung, wenn nicht. Diese lassen Überprüfen Funktion vermeidet zu gehen in der Schleife.
Also:
1) Definieren Sie eine Validierung var außerhalb die Validate-Funktion und legen Sie es auf false.
2) Feuer der Fokus und alert nur, wenn Validierung falsch ist, und danach legen Sie es auf wahr
Die javascript-Funktion
alert(string)
synchron ist. Das Skript angehalten wird, während der Benutzer reagiert auf die Nachricht alarmiert. Es gibt keine Notwendigkeit, etwas besonderes zu tun. Der folgende Code sollte funktionieren:Element bekam den Fokus direkt nachdem der Benutzer verfasst die Nachricht alarmiert.
alert(string)
ist nicht asynchrone es synchron so-Skript wartet, bis der Alarm diaolog zu werden, geschlossen zu halten, aufonblur
Veranstaltung. Dort rufen Sie diefocus()
Methode. Dies führt zu einer nie endenden Schleife.alert
? Und danke für die schnelle Antwortel.focus();
laufen sollte nur nach dem alert-Dialogfeld wird geschlossen. Also nach dem schließen der alert-box, wenn ich Klick auf dem Bildschirm(nicht im Textfeld), dann nuronblur
bekommen sollten, genannt. Bin ich im Recht?