Hallo,
Es ist mir fast schon peinlich bei einem so trivialen Problem zu fragen, habe auch schon die Suchfunktion bemüht, da muss es doch schon Lösungen geben ... aber scheinbar bin ich zu blöd.
Ich habe ein input-Feld, welches ich bei onChange auf einen korrekten Wert prüfe. Falls der Wert nicht valid ist, soll der Fokus wieder auf dasselbe Feld gesetzt werden.
Hier die Funktion:
function check_time(element){
var Ausdruck = /([0-9]{1,2})\:([0-9]{1,2})/;
if (!Ausdruck.exec(element.value) || RegExp.$1 == "" || RegExp.$2 == "" || RegExp.$1 < 0 || RegExp.$1 > 23 || RegExp.$2 < 0 || RegExp.$2 > 59 ) {
alert("Ungültige Uhrzeit!");
element.value="";
element.focus();
}
}
Die arbeitet auch prima, bis auf das element.focus().
Wird die per onChange aufgerufen, "verliert" das Element den Fokus.
<input type="text" name="timestart" id="timestart" size="5" maxlength="5" onChange="javascript:check_time(this)" />
Nehme ich einfach einen separaten Button zum Checken, wird der Fokus korrekt gesetzt.
<input name="test" type="button" id="test" onclick="javascript:check_time(document.getElementById('timestart'))" value="Test" />
Was mache ich da Falsch?
Tostan