Textfeld nur Zahlen zulassen

kevkev

Erfahrenes Mitglied
Hi,

Ich hab ein Formular in dem man Zahlen einfügen muss.
Da ich es aber zu umständlich finde, erst nach dem "senden" button zu üerprüfen, ob es wirklich zahlen sind. will ich das über js machen.
Es soll so :
Wenn jemand ein anderes zeichen als eine zahl eintippt, soll diese zeichen einfach nicht erscheinen. wie bei den "ok" feld von dialern, da kann auch nur "o" und "k" eingetippt werden.

Weiß da jemand was?

Gruß kevin
 
Hallo!

Ich weiß nicht, ob es dafür eine einfachere Methode gibt, aber spontan würde mir folgendes einfallen:

Im Textfeld machst Du einen EventHandler onKeyUp, der eine kleine Funktion auslöst.

Und in dieser Funktion überprüfst Du dann, ob gerade eine Zahl eingegeben worden ist, oder eben nicht.

Mein Vorschlag (getestet und für gut befunden :p ):
Code:
<form name="form1">
<input type="text" name="zahlenfeld" value="" maxlength="5" onKeyUp="zahl()">
...
<script language = "javascript">
function zahl() {
if (document.form1.zahlenfeld.value < "0" || "9" < document.form1.zahlenfeld.value)  {
	document.form1.zahlenfeld.value = "";
	document.form1.zahlenfeld.focus();
	return false;
	}
}
</script>
Wichtig ist das onKeyUp! Mit onKeyDown geht es nämlich nicht! Formularname und Feldname mußt Du natürlich noch an Deine Daten anpassen...

Hoffe, Dir geholfen zu haben :)
 
Hi,

Bei mir funktioniert das als einzelene html-date recht gut, aber wenn ich es in meine html einbaue funtz es nicht:

Der name des feldes ist "feld1_breite".
Das Feld ist ca. in der mitte der seite.
<script language="javascript">
function zahl() {
if (document.form1.feld1_breite.value < "0" || "9" < document.form1.feld1_breite.value) {
document.form1.feld1_breite.value = "";
document.form1.feld1_breite.focus();
return false;
}
}
</script>

Kannst du mir helfen?

gruß kevin
 
Leider muß ich Deine Freude wieder dämpfen :(

Ich war mal wieder zu übereifrig und voreilig!

Vielleicht hast Du selbst schon bemerkt, daß mein erstes Script noch 2 Bugs hat: Es klappt nur, wenn das erste eingegebene Zeichen ein Buchstabe o.ä. ist. Wenn Du zuerst eine Zahl eingibst und dann einen Buchstaben... na, dann klappt's nicht mehr...

Was Du brauchst, ist noch eine for-Schleife mit einem Substring, der gewährleistet, daß immer jedes zeichen überprüft wird, und einen Substring, der im Fall einer "Nichtzahl" diese wieder abschneidet:
Code:
<script language = "javascript">
function zahl() {
var zahl = document.form1.zahlenfeld;
	for (var i = 0; i < zahl.value.length; i++) {
		var z = zahl.value.substring(i, i + 1);
		if (z < "0" || "9" < z)  {
			var zahl2 = zahl.value.substring(0, zahl.value.length-1);
			zahl.value = zahl2;
			zahl.focus();
			return false;
		}
	}
}
</script>

Sorry, daß ich nur eine halbfertige Funktion gepostet habe leider hatte ich nicht genügend getestet...

Aber nun sollte es *hoffentlich* funktionieren (aber mit Versprechen - wie beim letzten Mal - bin ich diesmal vorsichtig :rolleyes: )

Bis dann, Jerinca
 
Hallo nochmal!

Ui, da haben wir wohl zeitlich aneinander vorbeigeschrieben...

Also, erstmal nimmst Du jetzt lieber meine zuletzt gepostete Funktion.

Ansonsten sieht das alles ganz gut aus...

Könnte es vielleicht sein, daß Du gar kein Formular innerhalb Deines HTML-Tag-Paares hast oder Deins einen anderen Namen hat?

Solltest Du kein Formular haben oder eins, das nicht "form1" heißt, dann geht's natürlich nicht... Ach ja, zu einem <form name="xyz"> gehört natürlich immer auch ein </form>

Was anderes fällt mir so nicht ein... Hast Du vielleicht eine spezielle Fehlermeldung bekommen? Dann poste die gleich mal mit ;)

Bis denn dann...
 

Neue Beiträge

Zurück