hilfdirselbst.ch
Facebook Twitter gamper-media
"Funktioniert nicht" ist keine hinreichende Fehlerbeschreibung.
r a c
Beiträge: 955
13. Nov 2003, 21:17
Beitrag #1 von 9
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Hallo,

ich möchte in einem Formular ein Feld prüfen. Die Eingabe sollte nur aus Buchstaben und Zahlen bestehen, und mindestens 5 ,aber höchstens 14 Stellen haben. Ich kriegs aber nicht hin.

So weit mein Versuch


<script type="text/javascript"><!--
function checkform(){
if (document.form.Passwort.value == "") {
alert("Bitte gib ein Passwort ein.")
document.form.Passwort.focus();
return false;
}
if (document.form.Passwort.length > 4) {
alert("Dein Passwort ist zu kurz.")
document.form.Passwort.focus();
return false;
}
if (document.form.Passwort.length < 15) {
alert("Dein Passwort ist zu lang.")
document.form.Passwort.focus();
return false;
}
zeichen="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
if (document.form.Passwort.indexOf(zeichen.value.charAt(i)) == -1) {
alert("Dein Passwort enthält ungültige Zeichen.")
document.form.Passwort.focus();
return false;
}
}
// -->
</script>

Wer hat Ideen.
Grüsse
r a c
(Dieser Beitrag wurde von r a c am 13. Nov 2003, 21:19 geändert)
Top
 
X
Turicon
Beiträge: 161
14. Nov 2003, 07:39
Beitrag #2 von 9
Beitrag ID: #58893
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Hi rac,

hast Du die Abfrage nicht verdreht? Sollte es nicht < 5 und > 14 heißen?
So wie Du es jetzt hast, widerspricht sich ja die Abfrage und kann so nicht funktionieren.

Gruß,
Jens

|:. Webdesign von der Nordsee .:|
http://www.piske.de
als Antwort auf: [#58867]
(Dieser Beitrag wurde von Turicon am 14. Nov 2003, 07:41 geändert)
Top
 
r a c
Beiträge: 955
14. Nov 2003, 12:43
Beitrag #3 von 9
Beitrag ID: #58946
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Hi Jens,

ja du hast recht.

Das kommt da her, dass ich schon beides ausprobiert habe.
Aber auch bei < 4 kommt nicht die erwartete Fehlermeldung.

Und die Prüfung der Zeichen klappt auch nicht. Da blieb es sogar jeweils hängen und ich musste diesen Teil rausnehmen, damit das Script durchlief.
als Antwort auf: [#58867] Top
 
exquisitus
Beiträge: 247
14. Nov 2003, 17:04
Beitrag #4 von 9
Beitrag ID: #59020
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


hallo r a c

das hast du noch ein paar bugs drin in deinem script. das kann so nicht funktionieren.
versuch mal sowas:

function checkForm()
{
var objPasswort = document.f1.passwort;
if (objPasswort.value == "") {
alert("Bitte gib ein Passwort ein.");
objPasswort.focus();
return false;
}
if (objPasswort.value.length < 5) {
alert("Dein Passwort ist zu kurz.");
objPasswort.focus();
return false;
}
if (objPasswort.value.length > 14) {
alert("Dein Passwort ist zu lang.");
objPasswort.focus();
return false;
}
var zeichen="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
for (var i=0; i<objPasswort.value.length; i++) {
if (zeichen.indexOf(objPasswort.value.charAt(i)) == -1) {
alert("Dein Passwort enthält ungültige Zeichen.");
objPasswort.focus();
return false;
}
}
}


hth
gruss
Steven
als Antwort auf: [#58867] Top
 
r a c
Beiträge: 955
14. Nov 2003, 18:16
Beitrag #5 von 9
Beitrag ID: #59029
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Hallo Steven,

erstmal vielen Dank für deine Hilfe. Bei deinem Vorschlag krieg ich den Fehler value ist kein Objekt. Mir sagt das leider nicht viel.
als Antwort auf: [#58867] Top
 
r a c
Beiträge: 955
14. Nov 2003, 18:40
Beitrag #6 von 9
Beitrag ID: #59032
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Tschuldigung Steven,

es geht doch. Exquisit. Funktioniert prima. Danke.

Der Feldname Passwort war im Formular gross und im Script klein, deshalb die Konfusion.

Danke
r a c
als Antwort auf: [#58867] Top
 
Markus Walker  M 
Beiträge: 494
20. Nov 2003, 08:01
Beitrag #7 von 9
Beitrag ID: #59591
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Wenn auch mit etwas Verspätung, ein Tipp, wie das Script schlanker werden könnte:

Um ein sogenanntes Pattern bestehend aus min. 5 max. 14 alphanumerischen Zeichen zu finden/testen/ersetzen/etc. gibt's bei JavaScript das RegExp Objekt:
http://selfhtml.teamone.de/...t/objekte/regexp.htm

Dies ist enorm mächtig und kann wohl den allermeisten Anforderungen in dieser Richtung gerecht werden. Obige Filterung würde dann wiefolgt aussehen:

...
var pattern = /\w{5,14}/; //wort min. 5 max. 14 Zeichen aus [a-zA-Z0-9_]
if (!pattern.test(objPasswort.value)) window.alert("Das Passwort ist ungültig");
...

Dabei wird alles miteinander getestet. Sollen die einzelnen Punkte separat getestet werden, können weitere Patterns erzeigt werden und z.B. mit einer switch/case Verzweigung die entsprecenden Ausgaben gemacht werden.
Sollte das "_" Zeichen in obigem Pattern unerwünscht sein, müsste die Definition wie folgt lauten:
var pattern = /\[a-zA-Z0-9]{5,14}/;
als Antwort auf: [#58867] Top
 
oesi50  A  S
Beiträge: 2315
20. Nov 2003, 11:26
Beitrag #8 von 9
Beitrag ID: #59623
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


hi Markus,

Dein Suchmuster
var pattern = /\w{5,14}/;
trifft auch auf

' afddfsdfsdf dfgfsfg sdfsdfsd ' und 'dgdiponviguhgndgiohglkgndoighdglidgb' zu, da ja der gewünschte String darin enthalten ist.

Wenn ausschließlich nur 5-14 Zeichen enthalten sein dürfen, muss das Ganze so aussehen:

var pattern = /^\w{5,14}$/;
---------------I---------I

Beginn des Strings: ^
Muster: \w{5,14}
Ende des Strings: $

Grüße Oesi
Ich weiß, dass ich nichts weiß... (Sokrates)
als Antwort auf: [#58867]
(Dieser Beitrag wurde von oesi50 am 20. Nov 2003, 11:27 geändert)
Top
 
Markus Walker  M 
Beiträge: 494
20. Nov 2003, 12:31
Beitrag #9 von 9
Beitrag ID: #59634
Bewertung:
(1887 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen

Feldprüfen bei Formular


Hallo Oesi

Das ist natürlich absolut korrekt und ist mir in der Schnelle entgangen ;-)

Markus
als Antwort auf: [#58867] Top
 
X