Datumsabfrage
tray-park
- javascript
Hi!
Unsere check Funktion überprüft, ob der Inhalt eines Formularfeldes ausgefüllt ist und gibt dann eine Nachricht aus.
function check()
{
var element = null;
element = document.getElementById('textfeldberuf');
if (element.value.length <= 0)
{
alert('Bitte geben Sie den Beruf ein!');
element.focus();
return false;
}
else
element = document.getElementById('textfeldgeb');
if (element.value.length <= 0)
{
alert('Bitte geben Sie den Geburtstag ein!');
element.focus();
return false;
}
Wie kann man es nun machen, dass bsp. auch auf die Korrektheit der Eingabezeichen geachtet wird?
Man soll also auch eine Nachricht bekommen, wenn Buchstaben, statt Zahlen verwendet wurden.
Grüße Tray
Moin!
Wie kann man es nun machen, dass bsp. auch auf die Korrektheit der Eingabezeichen geachtet wird?
Man soll also auch eine Nachricht bekommen, wenn Buchstaben, statt Zahlen verwendet wurden.
Dafür gibt's z.B. <http://de.selfhtml.org/javascript/objekte/regexp.htm@title= Regular Expressions>. Quasi so, wie bei Deinem serverseitigem Code, den du sicherlich hast, damit all die Usereingaben an JS vorbei ebenfalls kontrolliert werden.
Wie kann man es nun machen, dass bsp. auch auf die Korrektheit der Eingabezeichen geachtet wird?
Wie gesagt indem man prüft, ob der Wert auf einen regulären Ausdruck passt (oder nicht).
Man soll also auch eine Nachricht bekommen, wenn Buchstaben, statt Zahlen verwendet wurden.
Z.B.
if (/[a-z]/i.http://de.selfhtml.org/javascript/objekte/regexp.htm#test@title=test(element.value)) {
alert("Fehler, Geburtstag enthält Buchstaben!");
}
Das sieht etwas wirr aus, aber /[a-z]/i notiert den reguläre Ausdruck bzw. erzeugt ein RegExp-Objekt, das dann die Methode test() hat. Das [a-z] heißt ein beliebiges Zeichen zwischen A und Z und das i hinter den Schrägstrichen heißt, dass Groß- und Kleinschreibung nicht beachtet werden (gleichwertig wäre /a-zA-Z/).
Mathias
hi tray
wenn du einfach nur testen willst ob zahlen oder buchstaben eingegeben wurden könntest du folgendes nutzen:
<script type="text/javascript">
function CheckZahl (Wert) {
if (isNaN(Wert)) {
alert(Wert + " ist keine Zahl!");
}
}
</script>
isNaN = is Not a Number
diese funktion schlägt an, wenn der eingegebene wert keine zahl ist.
wenn du detaillierter nachprüfen willst musst du mit regulären ausdrücken arbeiten. emailfelder kann man z.b. folgendermaßen auf ihr korrektes format prüfen:
if(!document.formularname.email.value.match(/[1]+@[A-Z0-9.-]+.[A-Z]{2,4}$/i))
{
alert("....dein hinweistext ...")
}
ich hoffe das hilft dir
grüße
tobi
A-Z0-9._%- ↩︎
if (isNaN(Wert)) {
alert(Wert + " ist keine Zahl!");
}
isNaN = is Not a Number
diese funktion schlägt an, wenn der eingegebene wert keine zahl ist.
Das prüft, ob der Wert als JavaScript-Zahl interpretiert werden kann. Es prüft nicht, ob der Wert das ist, was man für gewöhnlich unter Zahl versteht (die nicht negativen ganzen Zahlen oder reelle Zahlen mit einem Komma als Dezimaltrennzeichen).
Gültige JS-Zahlen sind z.B.:
0 sowie -0
123 sowie -123
156.21 sowie -156.21
Infinity sowie -Infinity
0XABC sowie -0XABC (Hexadezimalschreibweise, dezimal (-)2748)
0123 sowie -0123 (Oktalschreibweise, dezimal (-)83)
-.01E-12 (Exponentialschreibweise, gleich -1 mal 10 hoch -14)
Die will man aber allesamt üblicherweise nicht in einem Feld stehen haben, wenn eine »Zahl« erwartet.
Ungültig hingegen ist z.B.:
15,2
Insofern sollte man hier von isNaN, Number() und dergleichen die Finger lassen, wenn das Formularfeld nicht den Zweck hat, dass man eine Zahl eingibt, die dann ausschließlich von JavaScript verstanden und verarbeitet werden muss.
Zahlen überprüft man besser auch als Strings mit Regulären Ausdrücken. Anschließend könnte man sie in Zahlen umwandeln, um bspw. zu prüfen, ob die Zahl zwischen 5 und 10 liegt.
Mathias