[JavaScript] Zeichenkettenkontrolle

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Ich will meine Zeichenkette die in ein Inputfeld eingegeben wird kontrollieren.
Hab folgendes geschrieben:

HTML:
<script language="javascript" type="text/javascript">

function color_tag()
{
var tag = document.getElementById("tag1").length;
document.getElementById("monat1").innerHTML = tag;
if(tag != 2)
	{
	document.getElementById("tag1").style.backgroundColor = "#FF3333";
	document.input.senden.disabled = true;
	}
else
	{
	document.getElementById("tag1").style.backgroundColor = "#99cc00";
	document.input.senden.disabled# = false;
	}
	 
}
</script>

Aber es funktioniert nicht wie ich will.
Das Feld mit der id tag1 bleibt immer rot egal ob ich 2 zeichen eingebe oder eines.

Außerdem will ich noch ergänzen, das er nur zahlen als eingabe zulässt, und das der der tag nur mit den ziffern 0 1 2 oder 3 beginnen darf.

Was mach ich falsch und was muss ich ergänzen.

PS: Die funktion wird wie folgt aufgerufen
PHP:
<input name="ekt1" id='tag1' onkeydown="javascript:color_tag()" type="text" size="2" maxlength="2" value="<? echo date(d);?>" />
 
Zuletzt bearbeitet:
Hallo,

So hats bei mir grad funktioniert:

HTML:
<script language="javascript" type="text/javascript">

function color_tag()
{
var tag = document.getElementById("tag1").value.length; //ACHTUNG HIER --> .value.length verwenden!!
//document.getElementById("monat1").innerHTML = tag;

if(tag != 2)
	{
	document.getElementById("tag1").style.backgroundColor = "#FF3333";
	//document.input.senden.disabled = true;
	
	}
else
	{
	document.getElementById("tag1").style.backgroundColor = "#99cc00";
	//document.input.senden.disabled = false;
	
	}
	 
}
</script>

<input name="ekt1" id="tag1" onkeyup="color_tag();" type="text" size="2" maxlength="2" value="05" />

Du solltest auch onkeyup verwenden, da die Funktion dann erst aufgerufen wird, wenn das Textfeld auch effektiv verändert wurde. Wenn du nämlich onkeydown verwendest, steht in value der Wert drin, der in der Textbox steht ohne den neuen Buchstaben, den du soeben getippt hast...

mfg
mitos
 
Zuletzt bearbeitet:
geil funktioniert was ich noch fragen wollte:
1.
wie kann ich die eingabe von buchstaben und anderen Zeichen unterbinden und nur zahlen zulassen
2. wie rufe ich das erste zeichen einer zeichenkette ab?
 
Hallo,

1.
entweder du verwendest ein selection-Element:

HTML:
<select id="sel">
<option>1</option>
<option>2</option>
<option>3</option>
<option>...</option>
<option>99</option>
</select>

da du wahrscheinlich nur von 1 bis 99 gehst, (nehm ich mal an bei maximal 2 Zeichen ;) ) ginge das eigentlich recht gut...

oder so, ist aber nicht sehr elegant:

HTML:
<script language="javascript" type="text/javascript">

function color_tag()
{
var tag = document.getElementById("tag1").value; //ACHTUNG HIER --> .value.length verwenden!!
if(isNaN(parseInt(tag.substring(tag.length-1,tag.length))))
{
            //Überprüft, ob letztes Zeichen eine Zahl ist, wenn nein:
	alert("Fehler bei der Eingabe!");
	document.getElementById("tag1").value = tag.substring(0,tag.length-1); //und zeichen wieder rauslöschen
}


if(tag != 2)
	{
	document.getElementById("tag1").style.backgroundColor = "#FF3333";
	//document.input.senden.disabled = true;
	
	}
else
	{
	document.getElementById("tag1").style.backgroundColor = "#99cc00";
	//document.input.senden.disabled = false;
	
	}
	 
}
</script>

<input name="ekt1" id="tag1" onkeyup="color_tag();" type="text" size="2" maxlength="2" value="05" />

2. Erstes Zeichen einer Zeichenkette: var zeichen = kette.substring(0,1);

mfg
mitos
 
asseskiller schrieb:
wie kann ich die eingabe von buchstaben und anderen Zeichen unterbinden und nur zahlen zulassen
Dafür gibt es die Fkt. "isNaN(zahl)", aber aufpassen, gibt true zurück, wenn es keine Nummer ist.
 
Zurück
Oben