JS Formularprüfung: Firefox machts, Opera und Safari nicht
Claus
- javascript
Hallo,
folgendes JS überprüft, ob in Textfeldern wirklich nur Buchstaben und nicht Zahlen stehen. Bei Firefox funktioniert es wie gewünscht, Opera und Safari machen da nicht mit.
Kann mir jemand sagen was ich falsch mache?
function pruefe_adr() {
var errors='';
name=window.document.getElementById("feld_name");
vorname=window.document.getElementById("feld_vorname");
str=window.document.getElementById("feld_strasse");
plz=window.document.getElementById("feld_plz");
ort=window.document.getElementById("feld_ort");
email=window.document.getElementById("feld_email");
tel=window.document.getElementById("feld_tel");
pas=window.document.getElementById("feld_passwort");
pasrep=window.document.getElementById("feld_passrepeat");
if(name.value.match(/\D+/)==null || vorname.value.match(/\D+/)==null || str.value.match(/\D+/)==null || ort.value.match(/\D+/)==null)
{
errors+='- Ungültige Einträge\n';
}
if (errors) alert('Es sind Fehler aufgetreten:\n'+errors);
if (errors) return false;
}
Hallo Claus,
name=window.document.getElementById("feld_name");
name ist eine Eigenschaft von window.name
Ändere den Variablennamen und probiere es nocheinmal.
Grüße,
Jochen
Hallo Claus,
name=window.document.getElementById("feld_name");
name ist eine Eigenschaft von window.name
Ändere den Variablennamen und probiere es nocheinmal.Grüße,
Jochen
Hallo Jochen
Super, vielen Dank!
Jetzt funktioniert es.
Grüße,
Claus
Kann mir jemand sagen was ich falsch mache?
In erster Linie würde ich sagen: sehr unsauber programmiert.
name=window.document.getElementById("feld_name");
vorname=window.document.getElementById("feld_vorname");
str=window.document.getElementById("feld_strasse");
plz=window.document.getElementById("feld_plz");
ort=window.document.getElementById("feld_ort");
email=window.document.getElementById("feld_email");
tel=window.document.getElementById("feld_tel");
pas=window.document.getElementById("feld_passwort");
pasrep=window.document.getElementById("feld_passrepeat");
Das name vermutlich das konkrete Problem ist, hast du ja schon erfahren, aber alle diese Variabeln sind global verfügbar, was u.U. zu weiteren Fehlern führen kann. z.b. wenn du eine Funktion die ort heißt, wird diese hier überschrieben. Du solltest globale Variabeln immer vermeiden, wenn es geht.
if(name.value.match(/\D+/)==null || vorname.value.match(/\D+/)==null || str.value.match(/\D+/)==null || ort.value.match(/\D+/)==null)
{
Hier ist der explizite Test auf null überflüssig. if(!name.value.match(/\D+/) .. ) ist ausreichend.
Struppi.
Hallo Struppi,
danke für deine Tipps, sehr hilfreich.
Grüße,
Claus