Claus: JS Formularprüfung: Firefox machts, Opera und Safari nicht

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;

}

  1. 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

    --
    Kritzeln statt texten: Scribbleboard
    1. 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

  2. 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.

    1. Hallo Struppi,

      danke für deine Tipps, sehr hilfreich.

      Grüße,

      Claus