Javascript validacija forme

Javascript validacija forme

offline
  • Nemanja
  • Web Designer and Developer
  • Pridružio: 24 Jan 2007
  • Poruke: 266

Pozdrav,

potrebno mi je da odradim validaciju forme preko javascript-a. E sad odradio sam da prepoznaje da li je vrednost numerička ili string:
   var brTelefona=document.forms["noviKlijentForm"]["brTelefona"].value;    var anum=/(^\d+$)/;    if (anum.test(brTelefona))      {}else{      alert("Број телефона клијента мора бити унешен!\nДозвољени карактери: 0-9, /, - !");      return false;      }
kako da omogućim da dozvoli i unos karaktera "-" i "/" ?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Marko
  • programer
  • Pridružio: 29 Jun 2013
  • Poruke: 5

Potreban ti je regular expresion za telefonski broj. Na primer : \(?(\d{3})\)?-?(\d{3})-(\d{4})



offline
  • Nemanja
  • Web Designer and Developer
  • Pridružio: 24 Jan 2007
  • Poruke: 266

Da, ali zar u tom slučaju neće dozvoljavati samo unos u ovom formatu: XXX-XXX-XXXX ?

offline
  • Marko
  • programer
  • Pridružio: 29 Jun 2013
  • Poruke: 5

Da, u pravu si. Nisam mislio da je taj regular expresion resenje koje trazis, vec da potrazis na netu regular expression koji ti odgovara. Ne pametujem vec samo ti kazem kako bih ja to radio. Izvini ako ti je ovo nepotrebno. pozdrav!

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Druže, moj predlog ti je jQueryUi za celu formu i koristi Regular Expression.
To ti je najbolje rešenje - veruj mi. Jedino predlažem to isto da uradiš posle u PHP kao neku vrstu sigurnosti ako se "slučajno" zaobiđe javaskript nekom drugom skriptom.

Evo ti jedan primer na sajtu http://www.vpsserveri.in.rs/pitchrate/

A evo ti i kod:
<script type="text/javascript"> //<![CDATA[ $("#submit_sin_up").click(       function()       {          var name       = $("#name").val();          var lastname    = $("#lastname").val();          var email         = $("#email").val();          var pattern    = /^\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b$/i;              if(name == "" & lastname == "" & email == "")          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_error'>You must to fill all fields</div></center>");             return test(name);          }          else if(name == "")          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_error'>You must fill the field \"Name\"</div></center>");             return;          }          else if(lastname == "")          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_error'>You must fill the field \"Last name\"</div></center>");             return;          }          else if(email == "")          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_error'>You must fill the field \"Email\"</div></center>");             return;          }          else if(!pattern.test(email))          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_error'>You must enter a valid e-mail address</div></center>");             return;          }          else if ($("#terms").is(":checked"))          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up").slideUp("slow", function(){             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_success'>Loading Data<br />Please Wait</div></center>");             setTimeout(function(){ $("#sin_up").submit(); },3000); });             return;          }          else          {             $("#sin_up_message").fadeTo(0, 0);             $("#sin_up_message").fadeTo("slow", 1).html("<center><div class='login_error'>If you want to be a member, you must confirm the terms and conditions of this site</div></center>");             return;          }          return false;       }); $("#sin_up").keyup(function(e){if (e.which == 13) $("#submit_sin_up").click();return;}); setTimeout(function(){$(".login_error").fadeTo(1000, 0); setTimeout(function(){$(".login_error").html("");return;},1000);},8000); //]]> </script>
Javaskript ispisuje greške ako polja nisu popunjena jer su sva obavezna, ako email nije dobro upisan onda obaveštava i ako "terms and conditions" nisu potvrđeni onda takođe obavesti. Kada je sve OK onda loaduje i pokrene form a sve ostalo PHP.

Ovo je HTML:
<form enctype="multipart/form-data" method="post" action="index.php" name="sin_up" id="sin_up">        <div><div>Name :</div><input type="text" name="name" id="name" value="" size="30"></div>         <div><div>Last name :</div><input type="text" name="lastname" id="lastname" value="" size="30"></div>         <div><div>Email :</div><input type="text" name="email" id="email" value="" size="30"></div>         <div class="therms"><input name="terms" id="terms" type="checkbox"><a target="_blank" href="#">Yes, I have read and agree to the terms and conditions of this site.</a></div>         <div><input name="submit_sin_up" class="button blue" id="submit_sin_up" type="button" value="Sign up" /></div>     </form> <div id="sin_up_message"></div>

Super je stvar, lično sam ja pisao kod i radi bez greške. Pokušaj!

offline
  • Pridružio: 25 Jan 2004
  • Poruke: 2784
  • Gde živiš: Niš

@FoxVanis

Jedan savet - svaki put u tvom kodu selektor $("#sin_up_message") protrči kroz celokupan DOM. Bind-uj ga u neku promenljivu tako da on uvek ima pointer na DOM elemenat. Nadam se da ne grešim, ali ne znam još uvek da jQuery to radi sam.

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Default ::@FoxVanis

Jedan savet - svaki put u tvom kodu selektor $("#sin_up_message") protrči kroz celokupan DOM. Bind-uj ga u neku promenljivu tako da on uvek ima pointer na DOM elemenat. Nadam se da ne grešim, ali ne znam još uvek da jQuery to radi sam.


Hm? Jesi ga probao? Za sada mi radi dobro. Stavio sam sada u mom kodu u promenjivu i isto se ponaša. Ne vidim ni jednu grešku. Kroz praksu sam primetio da ponekad bolje pozvati neki ID direktno nego ga staviti u promenjivu.

Poigraj se slobodno.

offline
  • Pridružio: 25 Jan 2004
  • Poruke: 2784
  • Gde živiš: Niš

Nisam probao, verujem da kod radi.
Mislio sam na to da nije potrebno da selektor svaki put traži DOM elemenat tako što mora da protrči kroz celokupan html, već da ga samo jednom uperiš i vežeš za promenljivu. Za sada sam siguran da se razlika ne vidi, ali da je u pitanju hiljadu selektora ovako ponovljenih koji su deo nekih složenijih manipulacija DOM elemenata, sigurno bi se 'osetila' razlika Smile

offline
  • Web Designer, PHP Developer; HTML, CSS, SQL, jQuery Programmer
  • Pridružio: 13 Jun 2010
  • Poruke: 307
  • Gde živiš: Subotica

Default ::Nisam probao, verujem da kod radi.
Mislio sam na to da nije potrebno da selektor svaki put traži DOM elemenat tako što mora da protrči kroz celokupan html, već da ga samo jednom uperiš i vežeš za promenljivu. Za sada sam siguran da se razlika ne vidi, ali da je u pitanju hiljadu selektora ovako ponovljenih koji su deo nekih složenijih manipulacija DOM elemenata, sigurno bi se 'osetila' razlika Smile


Aha razumem. To je istina. Osetila bi se veoma. Za velike skripte se mora raditi sa promenjivima.
Još sam malo nov u jQuery ali sam popriličn ovladao i prezadovoljan sam mogućnostima koje pruža.

Ko je trenutno na forumu
 

Ukupno su 621 korisnika na forumu :: 5 registrovanih, 0 sakrivenih i 616 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: Boris90, Dorcolac, Haryy, Oluj2.1, sasa76