[jQuery] Validation

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zoals jullie misschien al weten heeft jQuery ook een standaard plugin voor form validatie. Echter vind ik deze niet zo compleet, daarom heb ik besloten zelf een plugin te schrijven.

Echter zit ik vast bij een van m'n laatste stapjes, en ik zie niet waarom het fout zou kunnen lopen, dus een oplossing bedenken is dan ook moeilijk. Daarom dat ik het hier even vraag of iemand het ziet.

De bedoeling van m'n validator is dus om het form te controleren aan de hand van rules, wat al perfect werkt. Nu wil ik echter ook aan de hand van mijn validator een "tip" kunnen toevoegen bij de input velden. Hier loopt het jammer genoeg fout.. De tips krijg ik al te zien, maar soms toont hij ze niet, soms wel.

Bij mijn test form neemt hij de eerste input field(username) niet op, en daarna slaat hij telkens 1 over. Als je dan van onder naar boven selecteert, gaat het echter wel, juist dat ene veld weer niet.

Het stukje jQuery code dat ik heb geschreven ziet er als volgt uit, ik hoop dat er genoeg info bijstaat zodat jullie het begrijpen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
form.find("[class]").each(function(){
            var field = $(this);
            /*
             * See if there is a rule attached to the class attribute
             */
            if(field.attr('class') !== undefined){
                var infoClass = "infoSpan";
                /*
                 * Bind the focus event to each field that has a rule defined
                 */
                $("#"+field.attr('id')).bind('focus', function(){
                    var infoSpan = $(document.createElement("span")).addClass(infoClass)
                    types = field.attr("class").split(" ");
                    var intI = 0;
                    //Go trough all the rules in the class attribute
                    for(var type in types){
                        //Only show the most important information rule(first rule in the class attribute)
                        if(intI == 0){
                            var rule = $.Validation.getRule(types[type]);
                            field.after(infoSpan.append(rule.infMsg));
                        }
                        intI++;
                    }
                });
                /*
                 * Bind the removal of the infoClass to the focusout event
                 */
                $("#"+field.attr('id')).bind('focusout', function(){
                    field.next("."+infoClass).remove();
                });
                //Add the field to the fields array for later validation
                fields.push(new Field(field));
            }
        });


Mijn test form is hier(let overigens niet op de rest, dit is het enige dat werkt atm.)

Ik heb het al met het $(inputid).focus() event geprobeerd, de focusout voor m'n focusin gezet, het lijkt niet echt te werken.

Probleem met de username opgelost, was doordat het loginform ook username gebruikt.

Edit;
Het probleem is al opgelost, de info is hier te vinden

[ Voor 12% gewijzigd door Verwijderd op 18-04-2011 10:29 . Reden: bijkomende test gedaan ]


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Niet om je te ontmoedigen, maar je weet dat er ladingen alternatieve validatie plugins zijn voor jQuery?
http://plugins.jquery.com...&type=All&sort_by=changed

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Wist ik niet van, ben nog niet zo heel vertrouwt met jQuery plugins. Nu, het is ook een soort van project om het programmeren weer op te pikken, heb mij er namelijk een tijdje niet meer mee bezig gehouden, dus dan vind ik het wel een leuk project.

Heb ze overigens eens rap bekeken de plugins die daar staan, en ze lijken me toch niet zoals ik ze wil, deze die ik geschreven heb is dan weer volledig gericht op mijn gebruik. Juist moet deze functie er nog in + een highlighter.

Acties:
  • 0 Henk 'm!

  • Mercatres
  • Registratie: September 2009
  • Laatst online: 13-09 16:34
Ook ik wil niet zo vervelend doen, en ik begrijp dat zulke dingen zelf maken ook leuk kan zijn. Maar ik maak graag gebruik van deze validator, die precies doet wat jij wil.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Deze heb ik al een tijdje gebruikt, maar die geeft volgens mij geen "tips" weer? Sommige doen het wel, maar dan moet je in je html code een span plaatsen, de bedoeling van mijn systeem is dat elke message betreffende het formulier via de validator gaat.

Hmm, ik ben wat verder de css gaan stylen qua layout, en heb er m'n infospan op position absolute geplaatst, en nu blijkt alles goed te werken. Lag dus blijkbaar niet aan m'n jQuery functie.

Toch bedankt voor de reacties!

[ Voor 31% gewijzigd door Verwijderd op 16-04-2011 09:59 . Reden: update ]


Acties:
  • 0 Henk 'm!

  • Meijuh
  • Registratie: December 2006
  • Laatst online: 17-03 21:08
Waarom zou je een form client-side wilen validaten?

Asus EN8800GTS, Asus P5E, Intel E8400, 2x500gb Spinpoint (raid0), Zalman HP 600 watt, cnps 9500 led, creative xfi music, 4x1gb hyperX PC2 8500


Acties:
  • 0 Henk 'm!

  • Leftblank
  • Registratie: Juni 2004
  • Laatst online: 09:58
Meijuh schreef op zondag 17 april 2011 @ 17:27:
Waarom zou je een form client-side wilen validaten?
Zodat je gebruikers lekker vlot feedback krijgen bij foutieve invoer? Het alternatief is natuurlijk via AJAX submitten en valideren maar dit duurt al snel wat langer en vereist aanpassingen aan de server-side, niet ideaal en niet altijd toepasbaar.

Acties:
  • 0 Henk 'm!

Verwijderd

Meijuh schreef op zondag 17 april 2011 @ 17:27:
Waarom zou je een form client-side wilen validaten?
Daar kun je vele redenen voor hebben, maar de meest voor de hand liggende reden is gebruikersvriendelijkheid.

En ja, je moet inderdaad ook op de server valideren. Dat moet altijd, sowieso, etcetera.

Acties:
  • 0 Henk 'm!

  • Meijuh
  • Registratie: December 2006
  • Laatst online: 17-03 21:08
Dan doe je toch dubbel werk. En een ajax request die een form validate duurt echt niet lang. (< 100ms) dus niet eens merkbaar door de gebruiker.

Asus EN8800GTS, Asus P5E, Intel E8400, 2x500gb Spinpoint (raid0), Zalman HP 600 watt, cnps 9500 led, creative xfi music, 4x1gb hyperX PC2 8500


Acties:
  • 0 Henk 'm!

  • Leftblank
  • Registratie: Juni 2004
  • Laatst online: 09:58
Meijuh schreef op zondag 17 april 2011 @ 19:50:
Dan doe je toch dubbel werk. En een ajax request die een form validate duurt echt niet lang. (< 100ms) dus niet eens merkbaar door de gebruiker.
Dubbel valt ook wel redelijk mee; je zal je server-side ook voor moeten bereiden op de AJAX-requests voor validatie, je krijgt dat ook weer niet volledig gratis. Verder kan 100ms in genoeg gevallen alsnog ongewenst zijn, denk bijvoorbeeld aan invoer voor een username of e-mailadres 'live' controleren op foutieve karakters, dan is 100ms gewoon niet vlot genoeg. Kortom, voor beide manieren zijn genoeg voor- en nadelen te noemen.

Acties:
  • 0 Henk 'm!

  • kluyze
  • Registratie: Augustus 2004
  • Niet online
Ik zie niet onmiddellijk het probleem in je script en kan je dus niet echt een hint naar de fout geven.

Wat ik wel kan is je een tip geven:
http://getfirebug.com/logging

Heel handig om te debuggen. En zo zie je meteen wat er in je code uitgevoerd wordt, welke elementen doorlopen worden enz.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
kluyze schreef op zondag 17 april 2011 @ 20:08:
Ik zie niet onmiddellijk het probleem in je script en kan je dus niet echt een hint naar de fout geven.

Wat ik wel kan is je een tip geven:
http://getfirebug.com/logging

Heel handig om te debuggen. En zo zie je meteen wat er in je code uitgevoerd wordt, welke elementen doorlopen worden enz.
Probleem is al opgelost, toch bedankt voor de reactie. Het lag blijkbaar aan de CSS, geen idee waarom precies. Maar toen ik verder m'n form ging stylen heb ik position op absolute gezet, en toen was alles direct opgelost.

Overigens is client-side validatie vooral handig voor usability. Nu ziet de gebruiker direct als er een fout is in plaats van te moeten wachten tot hij op de submit knop heeft geklikt. Dit is een leuk artikel ivm het onderwerp: SmashingMagazine
Pagina: 1