Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Angular form validointi kysymyksiä

Suoratmutkiks [04.11.2015 18:42:59]

#

http://plnkr.co/edit/lp1uyNNXomnR9yl1B5xP?p­=preview

1. Missä tässä koodissa on syöttöparametrien määritelmä joilla sähköposti on validi? Nyyppä ei vaan löydä sellaista mistään. Ja nyt siis tarkoitan että lomake ei hyväksy emailiksi osoitetta jossa on vähemmän kuin 1merkki+@+1merkki, mistä näen että tämä on näin määritelty (ja pääsen määrittelemään vielä tarkemmin)?

2. Mitenkä ja missä voin määritellä että submit button on kyseisessä koodissa disabloitu jollei kentät ole valideja sekä haluamani checkbox ole checked?

Metabolix [04.11.2015 20:43:34]

#

Enpä perehtynyt tuohon tarkemmin, mutta ainakin kentän tyyppinä on email, jolloin nykyaikainen selain tekee validoinnin ihan itse. Sähköpostiosoitteen validointia ei todellakaan kannata itse ”parannella”, koska luultavasti siinä vain menee metsään.

Lähetysnapin disablointi vaatii, että aina jonkin kentän muuttuessa (tapahtuma change tai keyup) tarkistetaan koko lomake ja asetetaan lähetysnapin tila oikein.

Mango [05.11.2015 21:28:37]

#

Viittaat parissa kohtaa userForm:iin vaikka formin nimi on registrationForm. Tuon vuoksi esim. lähetyspainikkeen disablointi ei toimi. Jos haluat checkboxit mukaan validointiin pitää niillekin asettaa modeli (ng-model="registration.check1" tms) ja required-attribuutti.

Angular asettaa inputeille typen perusteella validaattorin automaattisesti, emailille se on lähdekoodista luntaten

EMAIL_REGEXP = /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i;

Tuon automaagisen validaattorin poistamiseksi tarvitaan oma direktiivi joka poistaa type-validaattorin inputilta. Toinen tapa on asettaa typeksi "text" ja ng-pattern direktiivillä oma regexp-sääntö validointiin. Tosin jos automaattinen type-validaattori on liian "löysä" niin voi sen lisäksi laittaa tiukemman pattern-validaattorin sillä molempien validaattorien pitää mennä läpi jotta kenttä olisi validi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta