André Laugks: index.Of() mehrere Strings

Hallo!

Um Fehler, wie .....@-tonline.de oder ...@planet.interkom.de (richtig: planet-interkom.de) zu vermeiden, habe ich eine kleine Formularabfrage zusammen gefummelt. Diese Fehler sind wirklich schon aufgetretten, und kommen dann natürlich wieder zurück.

Ich würde gern in index.Of() mehrere Strings angeben um eine if-Abfrage nicht ständig wiederholen zu müßen. Z.B.: Index.Of('planet.interkom.de,'-tonline.de','@') so oder mit einem + funktioniert es nicht. Ich kann in meinem JavaScript-Buch und in selfhtml auch kein Hinweis finden.

Hier mal mein Script. Irgendwie weis ich jetzt auch nicht, wie ich es kürzer schreiben könnte. Mir fällt jetzt nichts ein, wie index.Of() zu verschachteln oder so. Ich möchte mir einfach die ganzen  { alert(x); document.mailingliste.email.focus(); return false; } und if(document.mailingliste.email.value sparen, ausser einem natürlich.

<script language="JavaScript">
<!--

function liste()

{

var x = "Die Emailadresse ist fehlerhaft!";

if(document.mailingliste.email.value == " ") { alert("Bitte eine Emailadresse eintragen!"); document.mailingliste.email.focus(); return false; }  
if(document.mailingliste.email.value.indexOf("planet.interkom.de'') > -1) { alert(x); document.mailingliste.email.focus(); return false; }  
if(document.mailingliste.email.value.indexOf('-tonline.de') > -1) { alert(x); document.mailingliste.email.focus(); return false; }  
if(document.mailingliste.email.value.indexOf('@') == -1) { alert(x); document.mailingliste.email.focus(); return false; }  

return confirm ("Ist diese Emailadresse  " + document.mailingliste.email.value + "  richtig?");

}  
    
//-->
</script>

André

  1. Hi,

    Ich würde gern in index.Of() mehrere Strings angeben um eine if-Abfrage nicht ständig wiederholen zu müßen. Z.B.: Index.Of('planet.interkom.de,'-tonline.de','@') so oder mit einem + funktioniert es nicht. Ich kann in meinem JavaScript-Buch und in selfhtml auch kein Hinweis finden.

    nicht so, wie Du es Dir vorstellst, aber einfacher, als Du es momentan machst:

    var adr = document.mailingliste.email.value; // um's kürzer zu halten
    if (adr.indexOf("planet.interkom.de")>-1 adr.indexOf("-tonline.de")>-1 adr.indexOf("@")==-1) { alert(x); document.mailingliste.email.focus(); return false; }

    Cheatah

  2. Ah...

    Formularüberprüfungen... mein lieblings Thema :-)

    hier mal was das genau dein problem löst:

    String.prototype.anyOf = anyindexof

    function anyindexof() {
    For (var a=0;a < anyindexof.arguments.length ; a ++ ) {
    if (this.indexOf(anyindexof.arguments[a])>-1) {return true } }
    return false
    }

    if (document.mailingliste.email.value.anyOf("hanspeter",waldemar","gustav",fridolf")) { alert("doofer name enthalten"); }

    Ähm aber in deinem Speziellen fall würde ich doch dazu übergehen es mit einem zentralen String zu lösen den du am anfang irgendwo einbaust (damit du problemlos weitere lieblings fehler einbauen kannst) z.B.

    var toptenfehler = "@aol.com=@t-online.de=@teamone.de";

    wobei das = das trennzeichen ist. das würde ich dann mit .split in eine array reinstopfen und das ganze ganz normal mit ner kleinen funktion und 'ner forschleife überprüfen lassen.

    Ach ja hier noch mein liebling check die email funktion:

    function check_email(was) {

    if ( was.indexOf("@") == -1 ) return "\n"+was+": Ist keine Gültige E-Mail Adresse";
    if ( was.substring(0,was.indexOf("@")).length < 3 was.substring(was.indexOf("@"),was.length).length < 5 was.substring(was.indexOf("@"),was.length).indexOf(".") == -1 )  return "\n"+was+": Fehlerhafte Email-Adresse.";
    x = illegal(was.toLowerCase(),"01234567890.@_abcdefghijklmnopqrstuvwxyz");
    if ( x != "" ) return "\n"+wie+": Email enthält folgende ungültige Zeichen: \n\t "+x;
    return ""

    }
    function illegal(test,mit) {
    var x = ""
    for (var a=0 ;  a<= test.length ; a++ ) {
      if (mit.indexOf(test.charAt(a)) == -1) x = x + test.charAt(a)
      }
    return x
    }

    Die funktion gibt bei einem fehler ein string zurück.

    solong Timo