Formularüberprüfer || Eigene Funktion - Feedback erwünscht

  • Grüße (=
    Da mir langweilig war und ich auf eine etwas andere JavaScript schreibweise gestoßen bin, hab ich einfach mal ne nützliche Kleinigkeit geschrieben, mit der man seine Formulare automatisch überprüfen lassen kann. (ACHTUNG! Ihr solltet dennoch die Eingaben mit PHP untersuchen lassen!)
    Was macht es auf meiner Beispielseite?
    -> Es gibt allen Input's die Beschriftung aus dem Title-Attribut
    -> Es gibt allen Input's Eventhandler, mit denen automatisch der Inhalt z.B. beim Standardtext entfernt wird,..
    -> Es überprüft die Eingaben nach Verlassen des Feldes
    -> Es Vergleicht Passwortfeld 1 mit Passwortfeld 2
    -> Es verhindert ggf. das Absenden des Formulars, falls nicht alles korrekt ist


    Bei Fragen stehe ich euch gerne zur Verfügung (= Ebenfalls hätte ich auch gerne Feedback von euch :D
    Eine Frage hätte ich aber auch noch: Soll ich das in dieser Schreibweise lassen, oder soll ich richtig OOP schreiben? (also mit myObject.prototype.myFunction [Nicht die Funktionsbibliothek])


    Inhaltsverzeichnis:
    -> Autor, Größe, Code,..
    -> Funktionsübersicht
    -> Benutzung des Script


    FormCheck.js
    Author: Dustin Breuer (Sarkkan[at]ymail[dot]com)
    Summary: Automatischer Formularüberprüfer
    Updated: 2010-12-08
    License: MIT(<- Link zu Wiki, für Informationen zur Lizenz)
    Version: 1.0 Beta
    Größe: 3.985Bytes (~3,9Kb) [der .mim.js Code]


    URL:
    <!-- m --><a class="postlink" href="http://Code.Sarkkan.de/JavaScript/FormCheck/">http://Code.Sarkkan.de/JavaScript/FormCheck/</a><!-- m -->
    <!-- m --><a class="postlink" href="http://Code.Sarkkan.de/JavaScript/FormCheck/Form.mim.js">http://Code.Sarkkan.de/JavaScript/FormCheck/Form.mim.js</a><!-- m -->


    Notes:
    Uncompressed Code:
    <!-- m --><a class="postlink" href="http://Code.Sarkkan.de/JavaScript/FormCheck/Form.js">http://Code.Sarkkan.de/JavaScript/FormCheck/Form.js</a><!-- m -->


    Funktionsübersicht:
    Check.Start()
    Startet das Script. Gibt allen Inputfeldern die benötigen Event-Handler, setzt value,..
    (Durch das automatisch eingebundene 'ContentLoaded.js' empfiehlt es sich die Funktion mit: ContentLoaded(window, Check.Start); aufzurufen.)


    Check.Prufer.Right(Element, 1 = Passwort überprüfung)
    Überprüft Element, ob die Eingabe Valide ist.
    Wenn zusätzlich als 2. Parameter 1 übergeben wird, wird die Passwortüberprüfung(Check.Prufer.Passwort()) ausgeführt.


    Check.Prufer.Leer(Element)
    Überprüft Element, ob dessen 'value'-Attribut leer ist und führt ggf. Check.Error() aus.


    Check.Prufer.Passwort(Element)
    Überprüft, ob das 2.Passwortfeld den selben Inhalt hat, wie das erste.


    Check.Prufer.All()
    Überprüft jedes Inputfeld, ob diese valide sind und gibt erst dann das Formularfeld frei.
    (Gibt im Fehlerfall false zurück, ansonsten true)


    Check.Error(Element)
    Verwandelt das Inputfeld in ein "Error-Feld". Hierbei wird dem Feld eine Rote Schrift, sowie den Wert "Keine gueltige Eingabe" gegeben.


    Check.ResetError(Element)
    Verwandelt das Inputfeld wieder in ein "normales-Feld". Hierbei wird die Standardschriftfarbe wieder hergestellt.


    Check.Prufer.Send(Element)
    Gibt zurück, ob das Formular absende bereit ist. Wird automatisch dem Submit-Button gegeben.
    (Gibt im Fehlerfall false zurück, ansonsten true)


    Benutzung des Script:
    Gebt den Elementen, die eine Automatische Beschriftung erhalten sollen, ein 'title'-Attribute.


    Nun müsst Ihr einfach nur das Script mit Check.Start() aufrufen.
    Alles andere passiert vollautomatisch.

  • Zitat von &quot;DerWaldschrat&quot;

    Was meinst du mit "neue Art zu programmieren"?


    Ich habe mit JSON rum gespielt :P Außerdem war es keine neue Art, sondern eine für mich neue Schreibweise.


    Zitat von &quot;DerWaldschrat&quot;

    Wenn du strikte OOP willst, dann nimm: Prototype
    Das kann unglaublich viel (und hat nebenbei erwähnt, auch ein dom:ready-Event)
    Ansonsten, nettes Tool.
    DerWaldschrat


    Werde ich 100%ig nicht verwenden :D
    Ich kann diese riesigen Frameworks nicht ab, der Benutzer darf sich locker 30kb+ downloaden, wofür ich normal nur 3-5kb bräuchte :/
    Außerdem ist meinte ich mit JavaScript OOP und dem prototype nicht das dazugehörige Framework, sondern die OOP-Schreibweise:


    Das kann man theoretisch nämlich auch verallgemeinern, indem man z.B.
    Array.prototype.alertEveryElement()
    schreibt. Aufgerufen würde das dann mit (bei vorher definiertem Array [hier einfach mal Primzahl])

    Code
    Primzahl = new Array(2, 3, 5, 7);
    Primzahl.alertEveryElement();


    (Mit viel gerde nichts besseres ein xD)

  • Zitat von &quot;Sarkkan&quot;

    -> Es überprüft die Eingaben nach Verlassen des Feldes


    Das funktioniert bei mir nicht, er überprüft nur beim Absenden des Formulars


    Könnte man nicht noch eine genauere Überprüfung von E-Mails oder URLs machen?
    So überprüft er ja nur, ob überhaupt etwas eingegeben wurde. Könntest ja überprüfen, ob im title oder name eines inputs beispielsweise "E-Mail", "Email" oder soetwas drinvorkommt und diese dann auch auf gültige E-Mail Adressen überprüfen lassen.

  • Aha.. :/
    Kannst du mal schauen, ob dir irgendeine Fehlermeldung angezeigt wird(In der Fehlerkonsole).
    Welchen Browser benutz du den?^^


    So etwas hatte ich mir auch mal überlegt :D
    aber ich wollte das gerade einfach nur recht einfach halten :D
    (Wobei eine kleine Überprüfung statt findet :D So sind z.B. alle Sonderzeichen, außer @, -, _ und . verboten :D )

  • Irgendwie dachte ich, der überprüft auch, ob ein Feld leer ist und zeigt auch an, wenn die Eingabe richtig ist, wenn man es verlässt und die Überprüfung von E-Mailadressen war mir auch noch im Kopf.
    Mit "|" klappts, soviel anderes, worauf geprüft werden kann gibt es ja nicht.


    Tschuldigung :oops:
    Wenn dir immer noch langweilig ist, kannst du die Überprüfungen ja noch erweitern ;)

  • Sarkkan: Ja, die prototypische Schreibweise kenn ich, nützt halt nur für sehr wenige Objekte.
    Ja gut, Protoype ist groß, aber wenn du auch noch Ajax und sonstige Sachen, sowie wie schon gesagt echte OOP nutzen willst, kommst du halt nicht drumherum.
    Und wenn du was Anpassbares brauchst, dann nimm Mootools
    Aber das ist Geschmackssache.


    Eine Frage hätte ich noch: Wieso verwendest du "element.setAttribute("onblur", "funktionxy()")" statt "element.onblur=funktionxy" oder halt eine extra Funktion, die prüft, welche von "addEventListener" und "attachEvent" funktioniert.
    Und, das ist aber auch Geschmackssache: Wieso schreibst du deine Variablennamen groß?


    DerWaldschrat

  • Zitat von &quot;DerWaldschrat&quot;

    Ja gut, Protoype ist groß, aber wenn du auch noch Ajax und sonstige Sachen, sowie wie schon gesagt echte OOP nutzen willst, kommst du halt nicht drumherum.

    Irgendwo schwachsinn.. ich will sie ja nicht nutzen, ich will sie wenn selber schreiben O.o
    Also warum sollte ich dann ein Framework einbinden? O.o Die paar Funktionen, die ich daraus bräuchte würde ich mir dann selber schreiben.. <.<


    Zitat von &quot;DerWaldschrat&quot;

    [1]Eine Frage hätte ich noch: Wieso verwendest du "element.setAttribute("onblur", "funktionxy()")" statt "element.onblur=funktionxy" oder halt eine extra Funktion, die prüft, welche von "addEventListener" und "attachEvent" funktioniert.
    [2]Und, das ist aber auch Geschmackssache: Wieso schreibst du deine Variablennamen groß?


    DerWaldschrat


    [1] Weil ich mir hier relativ sicher bin, dass es funktioniert :/
    Und weil es mir halt so beigebracht wurde :D Mysteriöserweise setze ich onblur o.Ä. mit setAttribut, wenn ich aber auf z.B. Stylesachen oder value zugreifen will, benutze ich die "Kurzschreibweise"'/Direkte.
    Außerdem wäre jedesmal eine Überprüfung auch wieder irgendwo (meiner Meinung nach) zu Speicherintensiv :/


    [2] Das mache ich ebenfalls irgendwie einfach unterbewusst :/ So etwas gehört für mich irgendwie groß^^ Hat also keinen tieferen Sinn :)
    Außerdem weiß ich, dass es mir im Endeffekt egal sein kann, wie ich meine Variablen nenne, da die komprimierte Form sowieso dann nur mit 'a' o. 'b' arbeitet :D

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!