onblur on onfocus Problem

Drawlix

Mitglied
Folgendes Problem wenn ich ein Punkt in das erste Textfeld schreibe und dann ins nächste Klicke
Dann bekomme ich denn Focus auf das 2 Textfeld aber ich möchte den Focus wider in ins erste Textfeld haben. In Chrome funktioniert diese Lösung aber nicht im firefox


HTML:
<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="utf-8">
	<script>
	function onFocus(input)
	{
	if(input.value == input.defaultValue) 
		input.value = '';
	}

	function onBlur(input)
	{
	if(!input.value) 
		input.value = input.defaultValue;

	if(input.value==".")
	{
		document.getElementById(input.id).focus();		
	}
	}

	</script>
</head>
<body>
<input name="test1" type="text" id="test1" size="10" maxlength="10" value="wert" onfocus="onFocus(this);" onblur="onBlur(this);"/>
<input name="test2" type="text" id="test2" size="10" maxlength="10" value="wert2" onfocus="onFocus(this);" onblur="onBlur(this);"/>

</body>
</html>

Danke für die hilfe
 
Als workaround würde das hier funktionieren:
Javascript:
setTimeout('document.getElementById("'+input.id+'").focus()', 10);
 
Timestamps Lösung ist denke ich OK. Aber ich würde die Verzögerung auf 0 setzen. Dadurch wird der Code ausgeführt, sobald der aktuelle Block beendet ist. Außerdem brauchst du kein getElementById, denn du hast doch schon die Referenz auf das Objekt.

Javascript:
function onFocus(input)
{
	if(input.value == input.defaultValue) 
		input.value = '';
}

function onBlur(input)
{
	if(!input.value) 
		input.value = input.defaultValue;
		
	if(input.value==".")
		window.setTimeout(function() {input.focus()}, 0);
}
 
Zurück