Dirk: EMail Adresse auf länge prüfen

Servus,

möchte meine EMail Adresse auf eine bestimmte Länge prüfen, warum greift mein Script nicht?

  function pruefeEmail() {
  
	var email = document.getElementById("email");;
	
	if (email.value.length <= 10){
	  email.setCustomValidity("");
	} else {
	  email.setCustomValidity("Die eMail Adresse ist zu lang");
	}
  }
<form onSubmit="pruefeEmail();">
  <input type="email" name="email" id="email" required>
  <button>Abschicken</button>
</form>
  1. Tach!

    möchte meine EMail Adresse auf eine bestimmte Länge prüfen, warum greift mein Script nicht?

    Warum prüfst du nicht, ob dein Script greift oder nicht? Browser haben Debugger an Bord. Breakpoint in die Funktion setzen und dann schrittweise durchlaufen. Du wirst sehen, dass alles richtig abgearbeitet wird. Es kann nur sein, dass du kein Ergebnis siehst, weil die Zeit zwischen Anzeige und Absenden des Formulars zu kurz ist. Falls du das Absenden verhindern möchtest, musst du das noch einbauen.

    dedlfix.

  2. Tach,

    möchte meine EMail Adresse auf eine bestimmte Länge prüfen, warum greift mein Script nicht?

    das hat dir ja dedlfix im wesentlichen schon verraten.

    Noch ein paar allgemeine Anmerkungen:

    	if (email.value.length <= 10){
    

    passt nicht zu

    	  email.setCustomValidity("Die eMail Adresse ist zu lang");
    

    und allgemein ist die Abfrage auf eine Länge bei Mailadressen nicht sinnvoll, für die Minimallänge von fünf (in der aktuellen Praxis sechs, da es keine einbuchstabigen TLD gibt) für im Internet verwendbaren Adressen sorgt bereits das input-Feld vom Typ E-Mail mit required-Attribut und die Maximallänge von 254 ist eher akademisch, das gibt niemand versehentlich ein und muss meiner Meinung nach nicht clientseitig geprüft werden; weiterhin gibt es die Attribute minlength und maxlength für input-Felder, die einfacher zu benutzen wären.

    mfg
    Woodfighter

    1. Hallo und guten Morgen,

      Noch ein paar allgemeine Anmerkungen:

      [...]

      und allgemein ist die Abfrage auf eine Länge bei Mailadressen nicht sinnvoll, für die Minimallänge von fünf (in der aktuellen Praxis sechs, da es keine einbuchstabigen TLD gibt)

      Im lokalen Netz ist überhaupt kein Domainanteil notwendig, wenn der Mailserver bzw. dessen Delivery Agent in Standardeinstellung läuft. Dann wären demnach einbuchstabige Mailnamen möglich.

      Grüße
      TS

      1. Tach,

        Im lokalen Netz ist überhaupt kein Domainanteil notwendig, wenn der Mailserver bzw. dessen Delivery Agent in Standardeinstellung läuft.

        das ist so allgemein nicht richtig; es gibt MTAs, die damit umgehen können und welche, die das nicht tun; z.B. exim tut es nur, wenn die Konfiguration dafür entsprechend gesetzt wird.

        mfg
        Woodfighter

        1. Hallo und guten Morgen,

          Im lokalen Netz ist überhaupt kein Domainanteil notwendig, wenn der Mailserver bzw. dessen Delivery Agent in Standardeinstellung läuft.

          das ist so allgemein nicht richtig; es gibt MTAs, die damit umgehen können und welche, die das nicht tun; z.B. exim tut es nur, wenn die Konfiguration dafür entsprechend gesetzt wird.

          Davon weiß aber das Javascript auf dem Client nichts ;-P

          Grüße
          TS

    2. Hallo,

      Noch ein paar allgemeine Anmerkungen:

      	if (email.value.length <= 10){
      

      passt nicht zu

      	  email.setCustomValidity("Die eMail Adresse ist zu lang");
      

      du hast übersehen, dass das im Else-Zweig steht.

      Gruß
      Kalk

      1. Tach,

        du hast übersehen, dass das im Else-Zweig steht.

        öh, offensichtlich; als Ausrede kann ich nur anbieten, dass das Eis alle war.

        mfg
        Woodfighter

        1. Hallo,

          öh, offensichtlich; als Ausrede kann ich nur anbieten, dass das Eis alle war.

          Oh_oh, das klingt wie Notfall, schon bei 112 angerufen und nachbestellt?

          Gruß
          Kalk

          1. Tach,

            öh, offensichtlich; als Ausrede kann ich nur anbieten, dass das Eis alle war.

            Oh_oh, das klingt wie Notfall, schon bei 112 angerufen und nachbestellt?

            die Temperaturen diese Woche scheinen ja nicht so schlimm zu werden, wie die der letzten; da habe ich Zeit zum Wiederaufstocken der Vorräte.

            mfg
            Woodfighter

  3. Hallo Dirk,

    <form onSubmit="pruefeEmail();">
      <input type="email" name="email" id="email" required>
      <button>Abschicken</button>
    </form>
    

    Du solltes Eventhandler nicht im HTML notieren. Du brauchst dafür auch kein JavaScript.

    <input type="email" name="email" pattern="^.{,10}$" required> 
    

    Damit lässt sich auf die ID verzichten, da du die (wahrscheinlich) nur für Ansprechen mit JavaScript benötigst. Außerdem empfehle ich noch die Verwendung eines label-Elementes und des placeholder-Attributes.

    Zudem möchte ich anmerken, dass ich eine Einschränkung bei den E-Mail-Adressen für unsinnig halte. Es kann dir sogar Ärger einbringen, etwa wenn ein Besucher deiner Seite dich nicht über das Kontaktformular im Impressum kontaktieren kann, weil seine E-Mail-Adresse „dirk@example.com“ lautet. Dies gilt auch für eine Beschneidung innerhalb des Lokalteils.

    Bis demnächst
    Matthias

    --
    Signaturen sind bloed (Steel) und Markdown ist mächtig.