Der Martin: function checkForm() - im Textfeld Formulierungen ausschließen

Beitrag lesen

Hallo,

wenn ich in einem formular-textfeld ausschließen will, dass jemand verlinkungen einträgt, wie mache ich das?

indem du den eingegebenen String prüfst und unerwünschte Eingaben abweist.
Hilft dir das jetzt weiter? ;-)

der folgende teil bei function checkForm() wird nicht anerkannt:

Was meinst du mit "wird nicht anerkannt"? Vermutlich wird die Funktion sogar korrekt ausgeführt - aber ich sehe darin mindestens zwei logische Fehler, deshalb dürfte sie *jede* nur erdenkliche Eingabe abweisen und außerdem bei jedem Aufruf den String "http" ins Eingabefeld eintragen.

if (document.Formular.Text.value = "http" || document.Formular.Text.value = "a href")

Fehler #1: Das Symbol '=' steht für eine Zuweisung, nicht für einen Vergleich. Dieser Code würde also erstmal den String "http" an document.Formular.Text.value zuweisen (und ihn damit in das Textfeld schreiben). Dann stellt Javascript fest, dass das Ergebnis der Zuweisung, also der zugewiesene Wert, im boolschen Sinn true ergibt. Die nachfolgende Oder-Verknüpfung wird daher gar nicht mehr ausgeführt, weil sie das Gesamtergebnis sowieso nicht mehr ändert.

Fehler #2: Du prüfst -wenn wir mal den richtigen Operator '==' annehmen- nur auf exakte Übereinstimmung. Wenn "http" aber nur ein Teil der Eingabe ist, wird deine Prüfung nicht anspringen. Du musst also überprüfen, ob der unerwünschte Ausdruck *im String enthalten* ist, nicht unbedingt, ob er mit dem String identisch ist. Schau dir mal die Methoden des String-Objekts an. Für diesen Fall dürfte vor allem indexOf() interessant sein.

Und dann noch etwas Generelles: Die beiden Muster, auf die du prüfst, sind keineswegs eindeutige Merkmale für Links. Okay, es ist zwar unwahrscheinlich, dass "http" im normalen Text vorkommt; aber bei der Eingabe "cdibgelhttpxgtfash" würde deine Prüfung auch ansprechen - und das ist ganz bestimmt kein Link. Dagegen würde "<a title='weiter' href='...'>" gar nicht beanstandet. Überlege dir also, wie deine Vergleichsmuster eindeutiger werden.
Und warum willst du überhaupt die Eingabe von Links oder URLs verhindern?

So long,
 Martin

PS: Nach dem Absenden des Formulars wird die Eingabe serverseitig hoffentlich nochmal geprüft, oder? Denn Javascript kann ja leicht manipuliert oder deaktiviert werden ...

--
F: Was ist wichtiger: Die Sonne oder der Mond?
A: Der Mond. Denn er scheint nachts. Die Sonne dagegen scheint tagsüber, wenn es sowieso hell ist.