jquery provjera valjanosti obrasca. Zašto moram provjeriti ispunjavanje obrasca? Kako implementiramo jquery provjeru valjanosti

veseli brkovi 7. svibnja 2017. u 02:32 Provjera praznih polja obrazaca: univerzalna metoda
  • HTML,
  • JavaScript

Oni koji izrađuju web stranice kad-tad se suoče s potrebom provjere je li korisnik ispunio polja obrasca objavljenog na web stranici. U tu svrhu kreirana je neka vrsta opcije za provjeru praznih polja, koja se koristi u svojim projektima. Ali za svaki slučaj, broj polja koja treba provjeriti može biti drugačiji. To dovodi do činjenice da se kreirana opcija provjere mora mijenjati ovisno o specifičnim uvjetima, au budućnosti ćemo imati nekoliko njezinih izmjena.

Osim toga, nekoliko obrazaca može se postaviti na jednu stranicu stranice, od kojih će svaki imati različite količine Obavezna polja. Kao rezultat toga, kod će uključivati ​​nekoliko blokova s ​​istim funkcijama, ali različitim uvjetima, što nije uvijek prava odluka.

U svojoj sam praksi također morao koristiti različite varijante provjera popunjenosti polja obrasca ovisno o specifičnim uvjetima. A datoteka *.js sadržavala je nekoliko funkcija za provjeru različitih obrazaca, što je povećalo količinu koda i pogoršalo njegovu percepciju.


U nekom trenutku odlučeno je napisati verziju univerzalna metoda provjera praznih polja, koja se mogu koristiti za bilo koji obrazac s bilo kojim brojem potrebnih polja. Potrebni uvjeti Ova metoda određena je jednostavnošću i odsutnošću glomaznih struktura. Kao rezultat, pronađena je metoda koja me u potpunosti zadovoljila svojom jednostavnošću i svestranošću.


Suština ove metode:

  • U html označavanju za obavezna polja dodan je atribut podataka koji je obavezna oznaka.
  • Validacija se provodi samo za ona polja koja imaju ovaj atribut.
  • Mogućnost proširenja funkcionalnosti provjerom vrijednosti, odredio korisnik u polju.
  • Primjer označavanja obrasca:


    Naslov obrasca #1 Obavezno Obavezno Obavezno Obavezno

    Primjer koda za potvrdu polja:


    $(".js-form-validate").submit(function () ( var form = $(this); var field = ; form.find("input").each(function () ( field.push(" input"); var value = $(this).val(), line = $(this).closest(".some-form__line"); for(var i=0;i


    Metoda koju smo koristili za pozivanje funkcije putem događaja onsubmit zahtijeva vraćanje jedne od logičkih vrijednosti: true ili false kao rezultat funkcije. I, ovisno o ovoj vrijednosti, obrazac će biti poslan ili ne.

    Pokušajmo sada napisati funkciju provjere vezanu uz ovaj specifični obrazac. Kao što se sjećate, imamo samo dva polja koja je potrebno ispuniti: ime posjetitelja i njegovo email adresa. Najjednostavnije je provjeriti da li u sadržaju svakog od obaveznih polja nema teksta:


    < script language = "javascript" >


    Kao što vidite, funkcija provjere sastoji se od dva identična bloka, koji se razlikuju samo u nazivu polja koje se provjerava. Idemo komentirati svaki redak u ovim blokovima:

    Prvo provjerimo je li ovo polje prazno. A ako je to tako, onda
    prikazati poruku o pogrešci pomoću ugrađenog funkcije upozorenja(). Nakon što korisnik zatvori prozor, mi
    Upotrijebimo metodu focus() i pomaknimo pokazivač na polje s pogreškama. I konačno
    Izađimo iz funkcije postavljanjem oznake uspjeha na false.
    Ako polje koje se provjerava nije prazno, tada se odgovarajući blok jednostavno preskače. Ako su svi blokovi provjere preskočeni, funkcija kao rezultat vraća true, što označava uspješnu provjeru.

    Univerzalna funkcija provjere

    Ako trebamo provjeriti samo dva ili tri polja, još uvijek se možemo pomiriti s ovom metodom provjere “jedno po jedno”, ali što ako ih ima nekoliko desetaka? Ali to nije neuobičajeno – posebno u složenim upitnicima. Stoga smo malo modificirali našu funkciju tako da ne ovisi o broju polja koja se provjeravaju.

    Prije svega, napravit ćemo niz u kojem ćemo ispisati nazive svih polja koja zahtijevaju provjeru:

    Obavezno = novi niz("ime", "e-pošta");

    Ovaj pristup će nam omogućiti vrlo jednostavno dodavanje i izmjenu popisa potrebnih polja bez izravne promjene koda same funkcije.

    Uz gore opisani niz, dodat ćemo još jedan, koji će sadržavati tekst pogreške za određeno polje:

    Required_show = new array("Vaše ime", "e-mail");

    To će nam omogućiti da slobodno mijenjamo tekst o pogreškama i ispravno koristimo ruski jezik, a ne da se zadovoljavamo neprobavljivim frazama poput "ime nije uneseno".

    Uz niz obaveznih polja, cijela se provjera može obaviti u petlji. Ovako bi izgledala modificirana funkcija provjere:


    < script language = "javascript" >


    U petlji se provjeravaju sva polja obrasca kako bi se vidjelo odgovaraju li onima "potrebnim". Ako dođe do podudaranja, provjera se provodi na isti način kao što je gore opisano, ali s jednim upozorenjem - uvođenje niza s porukama o pogreškama zahtijevalo je blagu izmjenu funkcije alert(), tako da sada tekst pogreške izravno ovisi o naziv polja.

    To je u biti to. Ova funkcija je prilično univerzalan i uz minimalne prilagodbe (u suštini sadržaj dva niza) može se prilagoditi bilo kojem obliku.

    leđa

    Validacija polja na strani klijenta nešto je što svaki obrazac treba imati, u to nema sumnje. Prvo, korisnik ne mora čekati i trošiti živce. Drugo, pokazujete da vam je stalo do vaših posjetitelja. Vrlo je lijepo da posjetitelj unaprijed zna što je pogriješio.

    U ovom vodiču naučit ćemo kako napisati jQuery provjeru valjanosti obrasca u stvarnom vremenu. Ako želite vidjeti što možete smisliti, možete kliknuti DEMO i pogledati.

    Što ćemo danas naučiti? Kako implementiramo jquery provjeru valjanosti?

    Postoji mnogo načina da se to postigne, a evo najčešćih:

  • Možemo kreirati SPAN oznaku (koja će sadržavati validacijske informacije) pored polja za unos, i dati joj određeni ID preko kojeg ćemo joj pristupiti.
  • Svako polje možemo zamotati u oznaku P, unutar koje stvaramo SPAN koji će sadržavati informacije o validaciji polja.
  • Također možete omotati P polje s oznakom, unutar koje možete "naučiti" SPAN (u hodu koristeći jquery).
  • Sve će ovo uspjeti, ali neće najbolji način implementacija. Zašto? Jer ima previše dodatnog HTML koda u obrascu za unos koji nam ne treba. Mora se promatrati.

    Napravit ćemo to onako kako sam ja napravio za sebe. Po meni je to najispravnije rješenje, iako to nitko ne radi. Iskreno, nisam vidio da netko drugi ovo radi... ako znate, napišite mi komentar na kraju lekcije.

    Što ćemo učiniti?
  • pisat ćemo jednostavna forma, lijepo i čisto semantički kod, bez nepotrebnih oznaka.
  • Budući da ljudi ispunjavaju svako polje zasebno, možemo ga pratiti i potvrditi u hodu:
    • Odredite njegovu poziciju u prozoru (gornji lijevi kut)
    • Odredite njegovu širinu
    • Tako ćemo znati gdje mu je kraj.
    • Dodajmo informacije o potvrdi u DIV blok s određenim ID-om, s desne strane određenog polja. Također ćemo dodijeliti odgovarajuće klase .točno ili .netočno.
  • Napomena: ovo je također prihvatljivo za ljude koji ne koriste JavaScript u svom pregledniku. Oni će biti potvrđeni na strani poslužitelja.

    Struktura projekta

    Morat ćemo izraditi tri datoteke:

  • index.html
  • stil.css
  • potvrditi.js
  • Gledat ćemo sve korak po korak... prvo HTML kod, zatim potrebno CSS stilovi, kasnije ćemo se usredotočiti na glavnu skriptu za provjeru valjanosti obrasca jQuery.

    Pisanje HTML-a

    Razbijmo sve...

    Korak 1 - kreirajte osnovni HTML kodirati

    Za početak izradite datoteku index.html i u nju zalijepite ovaj osnovni kod. Možete vidjeti da u nastavku uključujemo jQuery datoteku, prije validation.js, koja sadrži našu skriptu za provjeru valjanosti.

    Korak 2 - napravite oblik podijeljen na tri dijela

    Napravit ćemo trodijelni obrazac da vidimo kako potvrditi različita polja za unos i kontrolnike. Za podjelu koristimo FIELDSET i LABEL, za naslove svakog odjeljka:

  • Osobni podaci (korisničko ime, datum rođenja, spol, vozilo).
  • E-pošta (polje za unos e-pošte korisnika).
  • O meni ( kratka informacija o korisniku).
  • Provjera valjanosti obrasca u stvarnom vremenu pomoću jQueryja Osobni podaci E-pošta o vama Korak 3 - dodajte polja i potvrdite gumb

    Sjajno, sada kreirajmo neka polja za unos za naš obrazac. Za našu lekciju posebno smo odabrali nekoliko različitih polja:

    • Tri polja za unos(korisničko ime, datum rođenja, email adresa).
    • RADIO tipke za odabir spola.
    • POTVRDIČKI OKVIR za Vozilo korisnik.
    • TEXTAREA za korisničke informacije.
    • GUMB za gumb "Potvrdi".

    Zamotat ćemo svaku OZNAKU i polje za unos u oznaku P kako bismo ih odvojili u zasebne blokove. Sada tvoj konačna datoteka index.html će izgledati ovako:

    Provjera obrasca u stvarnom vremenu pomoću jQuery osobnih podataka

    Puno ime:

    Dan rođenja (dd-mm-gggg):

    Ja sam: Muškarac Žena

    Posjedujem: auto avion bicikl brod

    E-mail

    E-pošta ( [e-mail zaštićen]):

    O tebi

    Recite nam nešto o sebi:

    podnijeti

    Ovo može izgledati pomalo zastrašujuće, ali to je zato što u našem obrascu postoji mnogo polja za unos. Zapravo, ovdje nema ništa komplicirano. Spremite svoju datoteku i pogledajte u pregledniku da vidite što se događa. Ajmo sad malo ukrasiti...

    Dodavanje CSS-a

    Budući da CSS stil nije glavna tema današnjeg tutorijala, nećemo se zadržavati na njemu. Samo nam treba ovaj CSS kod da forma izgleda lijepo i da svi blokovi budu na mjestu.

    Napravite datoteku style.css i u nju zalijepite donji kod. Sada obrazac s budućom jquery validacijom izgleda nevjerojatno. Nije li?

    Tijelo (pozadina: #efefef; margina: 0; ispuna: 0; granica: ništa; poravnanje teksta: središte; font: normalno 13px Georgia, "Times New Roman", Times, serif; boja: #222; ) #sadržaj ( širina: 500px; margina: 0 auto; margin-bottom: 25px; padding: 0; text-align: left; ) fieldset ( margin-top: 25px; padding: 15px; border: 1px solid #d1d1d1; -webkit-border- radius: 7px; -moz-border-radius: 7px; border-radius: 7px; ) legenda skupa polja ( font: normal 30px Verdana, Arial, Helvetica, sans-serif; text-shadow: 0 1px 1px #fff; razmak između slova : -1px; boja: #273953; ) unos, textarea ( padding: 3px; ) label ( cursor: pointer; ) .block ( display: block; ) small ( letter-spacing: 1px; font-size: 11px; font- stil: kurziv; boja: #9e9e9e; ) .info (text-align: lijevo; padding: 5px; font-size: 11px; color: #fff; position: absolute; display: none; -webkit-border-radius: 5px ; -moz-border-radius: 5px; border-radius: 5px; -webkit-box-shadow: -1px 1px 2px #a9a9a9; -moz-box-shadow: -1px 1px 2px #a9a9a9; okvir-sjena: -1px 1px 2px #a9a9a9; ) .greška ( pozadina: #f60000; obrub: 3px solid #d50000; ) .correct ( pozadina: #56d800; obrub: 3px solid #008000; ) .wrong (font-weight: bold; color: #e90000; ) .normal (težina fonta: normalna; boja: #222;) #pošalji (pozadina: #3f5a81; širina: 100%; obrub: 5px solid #0F1620; font: podebljano 30px Verdana, sans-serif; boja: #fafafa; tekst- sjena: 1px 1px 1px #0F1620; -webkit-border-radius: 7px; -moz-border-radius: 7px; border-radius: 7px; ) #send:hover (background: #4d76b1; border: 5px solid #253750; boja: #fff; ) #send:active ( text-indent: -10px; )

    Pisanje validacije jQuery obrasca

    Ovo je najzanimljiviji i najuzbudljiviji dio lekcije. Ali prvo moramo razmisliti i opisati glavne točke našeg rada. Treba sve isplanirati.

    Planiraju

    Prije nego što pišemo, postavite si tri pitanja:

  • Što nam treba od ove skripte?
  • Kako to želimo učiniti?
  • Kako ćemo to postići?
  • Ovo je jasno, želimo da skripta potvrdi obrazac. Ali kako? Želimo da to radi u stvarnom vremenu (kada korisnik završi s ispunjavanjem polja za unos) i kada se klikne gumb "Potvrdi". Stoga ćemo morati napisati nekoliko funkcija: posebno za svako polje za unos i za sve forme (koje će biti pozvane kada se klikne na gumb "Potvrdi").

    Kako bismo spriječili ponavljanje koda, morat ćemo stvoriti JavaScript objekt za ovo.

    Što nam treba za ovo?

    JS objekt u našem slučaju će se zvati jVal, sadržavat će sljedeće metode:

    • jVal.puno ime
    • jVal.datum rođenja
    • jVal.spol
    • jVal.vozilo
    • jVal.e-pošta
    • jVal.o

    Varijabla koja će sadržavati status trenutna greška- jVal.greške. I metoda koja provjerava postoje li greške i potvrđuje slanje obrasca ili ga odbija. Ukoliko se pronađu greške, upućuje korisnika na početak obrasca, gdje može ispravno ispuniti sva polja.

    Metoda se zove - jVal.sendIt

    Sada možemo početi s razvojem jQuery skripta provjera valjanosti obrasca. Kad napišemo prvu metodu, sve će ići lakše i brže.

    Počnimo s radom

    Osnova koda je jednostavna, apsolutno sav jquery kod bit će sadržan unutar ove sintakse:

    $(dokument).spreman(funkcija())( jVal = ( ); ));

    Validacija polja korisničkog imena

    Naša prva metoda će obraditi polje "korisničko ime". Zalijepite ga unutar jVal objekta, kao što je prikazano u primjeru:

    Var jVal = ( "fullName" : function() ( ) );

    Sada napišimo nekoliko redaka koda unutar metode. Samo ih zalijepite i pogledat ćemo što to znači sljedeće:

    $("tijelo").dodaj(""); var nameInfo = $("#nameInfo"); var ele = $("#puno ime"); var pos = ele.offset();

    Redak 1: Dokumentu dodajemo DIV blok. Informacije o klasi, daju određeni stil bloku, koji je definiran u datoteci style.css, također ga čini nevidljivim koristeći display:none; Nađi ID, ovo je red da imaš brz pristup u ovaj blok i njime manipulirajte koristeći jQuery. Ovaj DIV blok sadržavat će podatke o potvrdi valjanosti polja.

    Linija 3: Zapisujemo poziv ovom bloku u varijabli, jer ćemo je koristiti veliki broj jednom.

    Redak 4: Baš kao u prethodnom slučaju, bilježimo vezu s poljem punog imena u varijabli. Također ćemo ga koristiti mnogo puta.

    Funkcija jQuery offset() vraća trenutni položaj elementa u odnosu na dokument. Vraća se kao objekt koji sadrži gornja i lijeva svojstva. Ovu funkciju koristimo na ele za određivanje položaja polja za unos.

    Dodajmo sada još nekoliko redaka...

    NameInfo.css(( gore: pos.top-3, lijevo: pos.left+ele.width()+15 ));

    Kao što vidite, počinjemo raditi sa stilovima nameInfo bloka. Točnije, postavljamo njegov položaj desno od polja za unos. Da bismo to učinili, pomaknemo ga 3 piksela prema gore (2. red koda) i pomaknemo ga 15 piksela desno od polja (3. red koda).

    Napisali smo 50% prve metode, dovest ćemo je do kraja. Vrijeme je da se utvrdi koliko je korisnik ispravno unio podatke i da se nešto poduzme...

    If(ele.val().length< 6) { jVal.errors = true; nameInfo.removeClass("correct").addClass("error").html("← at least 6 characters").show(); ele.removeClass("normal").addClass("wrong"); } else { nameInfo.removeClass("error").addClass("correct").html("√").show(); ele.removeClass("wrong").addClass("normal"); }

    Ne izgleda dobro? Nema se čega bojati...

    Redak 1: Provjeravamo da ime koje je unio korisnik nije manje od 6 znakova.

    Redak 2: Postavite varijablu jVal.errors na true jer smo utvrdili da je korisničko ime prekratko. Ovo ćemo dalje koristiti.

    Linija 3: Počinjemo raditi s našim nameInfo elementom (u kojem prikazujemo informacije). Prvo uklanjamo klasu ispravna i dodjeljujemo pogrešku klase. Zatim u element nameInfo ubacujemo sadržaj, to je informacija da ime mora biti duže od 6 znakova. I konačno, našu poruku činimo vidljivom korisniku.

    Redak 4: Počinjemo manipulirati našim ele elementom (obrazac za unos korisničkog imena). Uklanjamo normalnu klasu i dodjeljujemo je pogrešnoj.

    Redak 5: Ako je korisničko ime dovoljno dugo, onda...

    Redak 6: Počinjemo manipulirati elementom nameInfo. Ako je dodijeljena pogreška klase, uklanjamo je i dodjeljujemo klasu ispravnu. Ubacimo "pticu" unutra da shvatimo da je sve u redu. I prikazati poruku za korisnika.

    Redak 7: Radimo s elementom ele. Uklanjamo pogrešnu klasu, ako je primijenjena, i primjenjujemo normalnu klasu.

    Stvorili smo našu prvu metodu provjere valjanosti! Vrijeme je da ga testirate. Moramo biti sigurni da će naša metoda biti pozvana kada korisnik završi s unosom svog imena. Da bismo ovo implementirali, akciji moramo pridružiti događaj. Koristit ćemo funkciju change(). Zalijepite primjer koda ispod, ispod jVal objekta:

    $("#puno ime").change(jVal.puno ime);

    Što ovo znači na ljudski jezik: Ako korisnik promijeni vrijednost polja "Puno ime" i završi s tim, poziva se metoda punog imena koja potvrđuje polje.

    Vaša validate.js datoteka sada bi trebala sadržavati sljedeći kod:

    < 6) { jVal.errors = true; nameInfo.removeClass("correct").addClass("error").html("← at least 6 characters").show(); ele.removeClass("normal").addClass("wrong"); } else { nameInfo.removeClass("error").addClass("correct").html("√").show(); ele.removeClass("wrong").addClass("normal"); } } }; // bind jVal.fullName function to "Full name" form field $("#fullname").change(jVal.fullName); });

    Validacija polja datuma rođenja

    Sada će sve ići brže. Samo trebamo napraviti kopiju metode fullName i napraviti neke promjene.

    Sada kopirajte metodu fullName, zalijepite je ispod i preimenujte je u datum rođenja. I napravite sljedeće promjene:

    • Gdje god se nameInfo pojavi, zamijenite ga s birthInfo
    • Umjesto #fullname, koristite #birthday za ele varijablu
    • Zalijepi ovaj predložak regularni izraz ispod je izraz birthInfo.css():
    var patt = /^(2)\-(2)\-(4)$/i;
    • Naš stari if() izraz trebao bi biti:
    if(!patt.test(ele.val()))
    • Poruka za ovo polje bit će: upišite datum u ispravnom formatu

    Ovako bi trebala izgledati metoda datuma rođenja nakon ovih promjena:

    "datum rođenja" : funkcija ()( $("body").append(""); var birthInfo = $("#birthInfo"); var ele = $("#birthday"); var pos = ele.offset( ); birthInfo.css(( gore: pos.top-3, lijevo: pos.left+ele.width()+15 )); var patt = /^(2)\-(2)\-(4)$ /i; if(!patt.test(ele.val())) ( jVal.errors = true; birthInfo.removeClass("correct").addClass("error").html("← upišite datum u ispravnom formatu ").show(); ele.removeClass("normal").addClass("wrong"); ) else ( birthInfo.removeClass("error").addClass("correct").html("√").show (); ele.removeClass("pogrešno").addClass("normalno"); ) )

    Koristeći regularni izraz (redak 14), provjeravamo da je datum u formatu 03/28/1987. U retku 16 provjeravamo odgovara li korisnikov datum rođenja uzorku regularnog izraza.

    I naravno, trebamo priložiti change() događaj polju datuma rođenja:

    $("#birthday").change(jVal.birthDate);

    Sada imamo još jednu radnu metodu provjere valjanosti obrasca jQuery. Odličan posao!

    Provjera valjanosti polja postaje

    Ponovno kopirajte metodu fullName, preimenujte je u spol i napravite sljedeće promjene:

    • Preimenujte sve nameInfo u genderInfo
    • Umjesto #fullname, koristite #woman za ele varijablu
    • U izrazu genderInfo.css() promijenite gornju varijablu u top: pos.top-10 i slijeva nalijevo: pos.left+ele.width()+60
    • Naša if() izjava trebala bi biti:
    if($("input:checked").length === 0)
    • Poruka korisniku će biti: jeste li muškarac ili žena?

    Ovako bi trebala izgledati rodna metoda nakon promjena:

    "gender" : function ()( $("body").append(""); var genderInfo = $("#genderInfo"); var ele = $("#woman"); var pos = ele.offset( ); genderInfo.css(( gore: pos.top-10, lijevo: pos.left+ele.width()+60 )); if($("input:checked").length === 0) ( jVal .errors = true; genderInfo.removeClass("correct").addClass("error").html("← jeste li muškarac ili žena?").show(); ele.removeClass("normal").addClass ("pogrešno"); ) else ( genderInfo..removeClass("greška").addClass("ispravno").html("√").show(); ele.removeClass("pogrešno").addClass("normalno "); ))

    U retku 14 provjeravamo koliko je radio selektora odabrano. Ako je 0, korisnik nije ništa odabrao, prikazujemo poruku o pogrešci.

    I kao i uvijek, prilažemo rodnu metodu za radio gumbi:

    $("input").promjena(jVal.gender);

    Provjera valjanosti - vlasništvo vozila

    Sada kopirajmo metodu roda i preimenujmo je u vozilo, čineći sljedeće promjene:

    • Zamijenite sve genderInfo s vehicleInfo
    • Umjesto #woman, unesite #ship za ele.
    • U izrazu vehicleInfo.css(), vrijednost lijevo treba biti lijevo: pos.left+ele.width()+40
    • Naša if() izjava bi sada trebala biti:
    if($("input:checked").duljina