• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[GELÖST] auf copy & paste in eingabefeld prüfen

Blodyman

New member
Hi, irgendwie weiß ich nicht weiter. Ich bin noch blutiger Anfänger und bekomm da mit meiner denkweise nicht weiter.

Mein Problem: ich möchte verhindern, dass jemand mit copy&pase den chat zumüllt. Soweit so gut. Es funktioniert bei einer Zeichenkette wie z.B. "abbcabbc".
Bei einer Zeichenkette wie "asdawewgawfegaefqawfsefafafasdawewgawfegaefqawfsefafaf" funktioniert die Funktion leider nicht. Es liegt Wahrscheinlich daran, dass "asd" und "awe", also die ersten 6 Zeichen nicht das selbe sind. Deshalb möchte ich die Schleife weiterlaufen lassen. Also, wenn asd und asw nicht das gleiche ist soll er weitere Zeichen an die Zeichenkette hängen.
Als nächstes sollte er also prüfen ob "asda" und "wewg"das gleiche sind dann "asdawewg" und "awfegaef" und danach ob "asdawewgawfega" und "efqawfsefafafa" und dann "asdawewgawfegaefq" und "awfsefafafasdawew", dann "asdawewgawfegaefqawfsef" und "afafasdawewgawfegaefqa", dann "asdawewgawfegaefqawfsefaf" und "afasdawewgawfegaefqawfsef".

Als letztes "asdawewgawfegaefqawfsefafaf" und "asdawewgawfegaefqawfsefafaf". Das trifft jetzt zu und es ist kopiert und eingefügt worden. Jertzt soll die fehlermeldung kommen. Tut sie aber nicht.
Die Fehlermeldung kommt immer nur, wenn die Zeichenkette an dem das 1. Zeichen an 1. Stelle bis zum nächsten gleichen Zeichen und die Zeichen danach bis der String so groß ist wie die 1. Zeichenkette die selben sind. Also 1nen von x durchläufen einer Schleife die aber weiterlaufen sollte.

Ich hoffe ich hab das Problem deutlich genug erklärt und ihr könnt mir helfen =)

Das ist der betroffene Code:
Code:
    var dopplungsworte = "mama papa popo pipi kaka koko lili lala lolo bambam bummbumm sumsum dummdumm".split(" "); // array mit Worten die aus sich doppelten Zeichen bestehen
    var stringcheck = "";                                                             //strings initialisieren
    var stringcheck1 = "";                                                           //"        ....          "
    var stringcheck2 = "";                                                           //"        ....          "
    var dopplungscheck = false;                                                      //"        ....          "
    for(var i3 = 0; i3 < dopplungsworte.length; i3++){                               // prüft ob ein string aus dopplungen vorliegt z.b. papa oder mama
        if(f.neuer_eintrag.value == dopplungsworte[i3]){
            dopplungscheck = true;
        }
    }
    if(dopplungscheck != true){
        for(i = 0; i < f.neuer_eintrag.value.length; i++){                           //"abbcabbc" <- der zu prüfende string   
        stringcheck += f.neuer_eintrag.value[i];                                     //"abbca"<-i=4 bbca  <- prüfer wird gefüllt bis 1 buchstabe der selbe ist, wie das aus der 1. stelle des prüfers 
            if(f.neuer_eintrag.value[i] == stringcheck[0] && i != 0){                //bei "abbca" trifft die bedingung zu  und i ist auf dem wert 4
                stringcheck1 = stringcheck.substr(0, stringcheck.length-1);          //"abbc"  <- abbca wird auf abbc gekürzt
                for(var i2 = 0; i2 <= i; i2++){                                      //es wird mit neuem iterator der weitere string abgegangen
                    stringcheck2 += f.neuer_eintrag.value[i+i2];                     //fängt bei der stelle an bei der i aufgehört hat ->"abbc"
                    if(stringcheck1 == stringcheck2){                                //wenn beide strings gleich sind wird eine fehlermeldung übermittelt
                        stringcheck2 = "";                                           // prüfer 2 wird zurückgesetzt
                        copypasefehler = "- Sie d%FCrfen nicht mehrmals die gleiche Zeichenkette eingeben.\n - - - - - - - - - - - - - - - - - - copy&pase Schutz - - - - - - - - - - - - - - - - - -\n";
                    }
                }
            }
        }
    }

Hier nochmal die gesamte Funktion mit allen Möglichkeiten die nach und nach abgearbeitet werden.
Code:
function submitpruefer(){
    var f = document.texteingabe;
    var fehler = "";
    var leerzeichenfehler = "";
    var gleichezeichenfehler = "";
    var copypasefehler = "";
    if (f.neuer_eintrag.value == ""){
      fehler+= "- Darf nicht leer sein!\n";
    }
    if (f.neuer_eintrag.value[0] == " "){
      fehler+= "- Das erste Zeichen Darf kein Leerzeichen sein\n";
    }
    for(var i = 0; i < f.neuer_eintrag.value.length; i++){
        if (f.neuer_eintrag.value[i] == " " && f.neuer_eintrag.value[i+1] == " " ){
            leerzeichenfehler = "- Es d%FCrfen keine 2 Leerzeichen hintereinander stehen\n";
        }
    }
    for(i = 0; i < f.neuer_eintrag.value.length; i++){
        if (f.neuer_eintrag.value[i] == f.neuer_eintrag.value[i+1] && f.neuer_eintrag.value[i] == f.neuer_eintrag.value[i+2] && f.neuer_eintrag.value[i] == f.neuer_eintrag.value[i+3]){
            gleichezeichenfehler = "- Es d%FCrfen nicht 4 mal die selben Zeichen hintereinander stehen\n";
        }
    }
    var dopplungsworte = "mama papa popo pipi kaka koko lili lala lolo bambam bummbumm sumsum dummdumm".split(" "); // array mit Worten die aus sich doppelten Zeichen bestehen
    var stringcheck = "";                                                            //strings initialisieren
    var stringcheck1 = "";                                                           //"        ....          "
    var stringcheck2 = "";                                                           //"        ....          "
    var dopplungscheck = false;                                                      //"        ....          "
    for(var i3 = 0; i3 < dopplungsworte.length; i3++){                               // prüft ob ein string aus dopplungen vorliegt z.b. papa oder mama
        if(f.neuer_eintrag.value == dopplungsworte[i3]){
            dopplungscheck = true;
        }
    }
    if(dopplungscheck != true){
        for(i = 0; i < f.neuer_eintrag.value.length; i++){                           //"abbcabbc" <- der zu prüfende string
        stringcheck += f.neuer_eintrag.value[i];                                     //"abbca"<-i=4 bbca  <- prüfer wird gefüllt bis 1 buchstabe der selbe ist, wie das aus der 1. stelle des prüfers
            if(f.neuer_eintrag.value[i] == stringcheck[0] && i != 0){                //bei "abbca" trifft die bedingung zu  und i ist auf dem wert 4
                stringcheck1 = stringcheck.substr(0, stringcheck.length-1);          //"abbc"  <- abbca wird auf abbc gekürzt 
                for(var i2 = 0; i2 <= i; i2++){                                      //es wird mit neuem iterator der weitere string abgegangen
                    stringcheck2 += f.neuer_eintrag.value[i+i2];                     //fängt bei der stelle an bei der i aufgehört hat ->"abbc" 
                    if(stringcheck1 == stringcheck2){                                //wenn beide strings gleich sind wird eine fehlermeldung übermittelt
                        stringcheck2 = "";                                           // prüfer 2 wird zurückgesetzt
                        copypasefehler = "- Sie d%FCrfen nicht mehrmals die gleiche Zeichenkette eingeben.\n - - - - - - - - - - - - - - - - - - copy&pase Schutz - - - - - - - - - - - - - - - - - -\n";
                    }
                }
            }
        }
    }
    if (f.neuer_eintrag.value.length > 200){
        fehler += "- Bitte geben sie nicht mehr als 200 Zeichen ein!";
    }
    if (fehler != "" || leerzeichenfehler != "" || gleichezeichenfehler != "" || copypasefehler != ""){
        var fehlertext = "Ein Fehler ist aufgetreten:\n\n";
        if(fehler != ""){
            fehlertext += fehler;
        }
        if(leerzeichenfehler != ""){
            fehlertext+= leerzeichenfehler;
        }
        if(gleichezeichenfehler != ""){
            fehlertext+= gleichezeichenfehler;
        }
        if(copypasefehler != ""){
            fehlertext += copypasefehler;
        }
        alert (unescape(fehlertext));
        return false;
    }
return true;
}

Und zum test: http://markus-r.pytalhost.de/eigene-projekte.php
einfach auf den Punkt Chat drücken

Danke schonmal für jede Antwort.

mfg Markus
 
AW: auf copy & pase in eingabefeld prüfen

Ließe sich nicht schlichtweg STRG + V sowie STRG + INS auf Deinem Eingabefeld abfangen?
 
AW: auf copy &amp; pase in eingabefeld prüfen

Das weiß ich nicht. Es wäre aber auch nicht gut, weil man ja Texte/Sprüche kopieren dürfen sollte. Nur halt nicht x mal das selbe.

- - - Aktualisiert - - -

Okay, hab den Fehler gefunden. Ich hab vergessen stringcheck2 wieder auf ein leeren String zu setzt falls stringcheck1 und stringcheck2 nicht die selben sind. Danke für die Antworten und fühlt euch frei den Code anzupassen und zu benutzen, falls ihr sowas braucht. =)

Code:
function eingabecheck(){
    var f = document.texteingabe;
    var fehler = "";
    var leerzeichenfehler = "";
    var gleichezeichenfehler = "";
    var copypasefehler = "";
    if (f.neuer_eintrag.value == ""){
      fehler+= "- Darf nicht leer sein!\n";
    }
    if (f.neuer_eintrag.value[0] == " "){
      fehler+= "- Das erste Zeichen Darf kein Leerzeichen sein\n";
    }
    for(var i = 0; i < f.neuer_eintrag.value.length; i++){
        if (f.neuer_eintrag.value[i] == " " && f.neuer_eintrag.value[i+1] == " " ){
            leerzeichenfehler = "- Es d%FCrfen keine 2 Leerzeichen hintereinander stehen\n";
        }
    }
    for(i = 0; i < f.neuer_eintrag.value.length; i++){
        if (f.neuer_eintrag.value[i] == f.neuer_eintrag.value[i+1] && f.neuer_eintrag.value[i] == f.neuer_eintrag.value[i+2] && f.neuer_eintrag.value[i] == f.neuer_eintrag.value[i+3]){
            gleichezeichenfehler = "- Es d%FCrfen nicht 4 mal die selben Zeichen hintereinander stehen\n";
        }
    }
    var dopplungsworte = "mama papa popo pipi kaka koko lili lala lolo bambam bummbumm sumsum dummdumm".split(" "); // array mit Worten die aus sich doppelten Zeichen bestehen
    var stringcheck = "";                                                            //strings initialisieren
    var stringcheck1 = "";                                                           //"        ....          "
    var stringcheck2 = "";                                                           //"        ....          "
    var dopplungscheck = false;                                                      //"        ....          "
    for(i = 0; i < dopplungsworte.length; i++){                                      // prüft ob ein string aus dopplungen vorliegt z.b. papa oder mama
        if(f.neuer_eintrag.value == dopplungsworte[i]){
            dopplungscheck = true;
        }
    }
    if(dopplungscheck != true){
        if(f.neuer_eintrag.value.length > 20){
            for(i = 0; i < f.neuer_eintrag.value.length; i++){                           //"abbcabbc" <- der zu prüfende string    !AbAcAdAwAgagAwAdAX
            stringcheck += f.neuer_eintrag.value[i];                                     //"abbca"<-i=4 bbca  <- prüfer wird gefüllt bis 1 buchstabe der selbe ist, wie das aus der 1. stelle des prüfers    !AbA
                if(f.neuer_eintrag.value[i] == stringcheck[0] && i != 0){                //bei "abbca" trifft die bedingung zu  und i ist auf dem wert 4
                  stringcheck1 = stringcheck.substr(0, stringcheck.length-1);          //"abbc"  <- abbca wird auf abbc gekürzt                           !Ab
                    for(var i2 = 0; i2 <= i; i2++){                                      //es wird mit neuem iterator der weitere string abgegangen
                     stringcheck2 += f.neuer_eintrag.value[i+i2];                     //fängt bei der stelle an bei der i aufgehört hat ->"abbc"          !Ac
                        if(stringcheck1 == stringcheck2){                                //wenn beide strings gleich sind wird eine fehlermeldung übermittelt     !nein
                            stringcheck2 = "";                                           // prüfer 2 wird zurückgesetzt
                            copypasefehler = "- Sie d%FCrfen nicht mehrmals die gleiche Zeichenkette eingeben.\n - - - - - - - - - - - - - - - - - - copy&pase Schutz - - - - - - - - - - - - - - - - - -\n";
                        }
                    }
                  stringcheck2 = "";                                                      // zurücksetzen des 2. prüfers wenn stringcheck1 und 2 nicht das selbe waren
                }
            }
        }
    }
    if (f.neuer_eintrag.value.length > 200){
        fehler += "- Bitte geben sie nicht mehr als 200 Zeichen ein!\n";
    }
    if (fehler != "" || leerzeichenfehler != "" || gleichezeichenfehler != "" || copypasefehler != ""){
        var fehlertext = "Ein Fehler ist aufgetreten:\n\n";
        if(fehler != ""){
            fehlertext += fehler;
        }
        if(leerzeichenfehler != ""){
            fehlertext+= leerzeichenfehler;
        }
        if(gleichezeichenfehler != ""){
            fehlertext+= gleichezeichenfehler;
        }
        if(copypasefehler != ""){
            fehlertext += copypasefehler;
        }
        alert (unescape(fehlertext));
        return false;
    }
return true;
}
 
Zurück
Oben