Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript] Walidacja formularza
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Witam, mam problem, otóż waliduję sobie formularz i mam problem z jedną opcją, a mianowicie dobrze mi sprawdza, czy pola zostały wypełnione, ale nie wiem jak sprawdzić, czy jedno z pól (pesel) ma 11 znaków (jeżeli nie ma, to alert).

  1. <script type="text/javascript">
  2. function przetwarzaj_dane ()
  3. {
  4. var brakuje_danych=false;
  5. var formularz=document.forms[0];
  6. var napis="";
  7. if (formularz.imie.value == ""){
  8. napis += "Imię\n"
  9. brakuje_danych=true;
  10. }
  11. if (formularz.nazwisko.value == ""){
  12. napis += "Nazwisko\n"
  13. brakuje_danych=true;
  14. }
  15. if (formularz.pesel.value == ""){
  16. napis += "Pesel\n"
  17. brakuje_danych=true;
  18. }
  19. if (formularz.nip.value == ""){
  20. napis += "NIP\n"
  21. brakuje_danych=true;
  22. }
  23. if (formularz.twp.value == ""){
  24. napis += "Termin ważności paszportu\n"
  25. brakuje_danych=true;
  26. }
  27. if (formularz.norweski.value == ""){
  28. napis += "Norweski numer identyfikacyjny\n"
  29. brakuje_danych=true;
  30. }
  31. if (formularz.adres.value == ""){
  32. napis += "Adres\n"
  33. brakuje_danych=true;
  34. }
  35. if (formularz.kod_pocztowy.value == ""){
  36. napis += "Kod pocztowy\n"
  37. brakuje_danych=true;
  38. }
  39. if (formularz.miejscowosc.value == ""){
  40. napis += "miejscowosc\n"
  41. brakuje_danych=true;
  42. }
  43. if (formularz.data_ur.value == ""){
  44. napis += "Data urodzenia\n"
  45. brakuje_danych=true;
  46. }
  47. if (formularz.telefon1.value == ""){
  48. napis += "Telefon stacjonarny\n"
  49. brakuje_danych=true;
  50. }
  51. if (formularz.polisa.value == ""){
  52. napis += "Polisa ubezpieczeniowa III filaru\n"
  53. brakuje_danych=true;
  54. }
  55. if (formularz.numer_obuwia.value == ""){
  56. napis += "Numer obuwia\n"
  57. brakuje_danych=true;
  58. }
  59. if (formularz.pesel.length != 11){
  60. napis += "\nNiepoprawny pesel"
  61. brakuje_danych=true;
  62. }
  63. if (!brakuje_danych)
  64. formularz.submit();
  65. else
  66. alert ("Nie wypełniłeś następujących pól:\n" + napis);
  67. }


Proszę o pomoc w rozwiązaniu tego problemu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 18)
230005
post
Post #2





Grupa: Zarejestrowani
Postów: 316
Pomógł: 36
Dołączył: 2.04.2008

Ostrzeżenie: (0%)
-----


Zrobiłbym to wyrażeniem regularnym :] . Poczytaj tu: http://republika.onet.pl/2471,34,1,,fabryka.html
Go to the top of the page
+Quote Post
Rafal Filipek
post
Post #3





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

Ostrzeżenie: (0%)
-----


@ 230005 wiesz twoja odpowiedz jest na takim poziomie jakby in5ane zapytał się która godzina a ty podałbyś mu aktualną wartość jaką zwraca funkcja microtime().

@in5ane
Kod
if (formularz.pesel.length != 11){

tutaj musisz odwalac sie do wartosci pola a nie do pola, tak wiec
Kod
if (formularz.pesel.value.length != 11){
Go to the top of the page
+Quote Post
krzysiekk
post
Post #4





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

Ostrzeżenie: (0%)
-----


witam ja korzystam z PEAR QuickForm i no generuje taki kod przy podaniu reguł walidacji jesli się przyda to proszę
  1. <script type="text/javascript">
  2. //<![CDATA[
  3. function validate_PPForm(frm) {
  4. var value = '';
  5. var errFlag = new Array();
  6. var _qfGroups = {};
  7. _qfMsg = '';
  8.  
  9. value = frm.elements['pesel'].value;
  10. if (value == '' && !errFlag['pesel']) {
  11. errFlag['pesel'] = true;
  12. _qfMsg = _qfMsg + '\n - Proszę podać PESEL';
  13. }
  14.  
  15. value = frm.elements['pesel'].value;
  16. var regex = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
  17. if (value != '' && !regex.test(value) && !errFlag['pesel']) {
  18. errFlag['pesel'] = true;
  19. _qfMsg = _qfMsg + '\n - PESEL powinien składac się tylko z cyfr';
  20. }
  21.  
  22. value = frm.elements['pesel'].value;
  23. if (value != '' && value.length > 11 && !errFlag['pesel']) {
  24. errFlag['pesel'] = true;
  25. _qfMsg = _qfMsg + '\n - Pesel jest zadługi';
  26. }
  27.  
  28. value = frm.elements['pesel'].value;
  29. if (value != '' && value.length < 11 && !errFlag['pesel']) {
  30. errFlag['pesel'] = true;
  31. _qfMsg = _qfMsg + '\n - Pesel jest zakrótki';
  32. }
  33.  
  34. if (_qfMsg != '') {
  35. _qfMsg = 'Formularz zawiera błędy:' + _qfMsg;
  36. _qfMsg = _qfMsg + '\nProszę poprawić błędy!';
  37. alert(_qfMsg);
  38. return false;
  39. }
  40. return true;
  41. }
  42. //]]>
Go to the top of the page
+Quote Post
in5ane
post
Post #5





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


A jak mogę zrobić, że jak mi się wyświetli ten cały alert to jak kliknę OK to, żeby mi się nie kasowały wszystkie wypełnione pola?
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


JAkim cudem kasuje ci sie zawartosc formularza?
Go to the top of the page
+Quote Post
in5ane
post
Post #7





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


Nie wiem, jak kliknę OK, to się kasuje i jak wezmę wstecz to jest dobrze.

P.S.: Zerknij sam: http://dancepiotrkow.pl/formularz.php

Ten post edytował in5ane 21.02.2009, 11:02:48
Go to the top of the page
+Quote Post
skowron-line
post
Post #8





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Kod
<form action="" onsubmit="return nazwaFunkcji()">

wtedy w przypadku false formularz sie nie wyśle
Go to the top of the page
+Quote Post
in5ane
post
Post #9





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


On się nie wysyła, tylko, że pola się oczyszczają.
Go to the top of the page
+Quote Post
skowron-line
post
Post #10





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(in5ane @ 21.02.2009, 11:10:13 ) *
On się nie wysyła, tylko, że pola się oczyszczają.

Może zamiast Submita masz Reste (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
A poważnie to pokaż cały kod.
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
On się nie wysyła, tylko, że pola się oczyszczają.

Dzizez, man, podstawy podstaw. Formularz ci sie nie czysci, tylko zostaje wyslany a ty potem wysylasz pusty formularz.

Daj onsubmit="przetwarzaj_dane()" i zwracaj false jesli formularz ma sie NIE wyslac. I zwroc TRUE jesli MA sie wyslac (jak kolega pisal wyzej).
Go to the top of the page
+Quote Post
in5ane
post
Post #12





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


To tak schematycznie ten kod html, będę musiał to wkleić do strony..

Proszę o pomoc z moim problem.

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
  2. "http://www.w3.org/TR/html4/strict.dtd">
  3. <html>
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <meta http-equiv="Content-Script-Type" content="text/javascript">
  7. <title>Formularz</title>
  8. <script type="text/javascript">
  9. function przetwarzaj_dane ()
  10. {
  11.  var brakuje_danych=false;
  12.  var formularz=document.forms[0];
  13.  var napis="";
  14.  if (formularz.imie.value == ""){
  15.    napis += "- Imię\n"
  16.    brakuje_danych=true;
  17.  }
  18.  if (formularz.nazwisko.value == ""){
  19.    napis += "- Nazwisko\n"
  20.    brakuje_danych=true;
  21.  }
  22.  if (formularz.nip.value == ""){
  23.    napis += "- NIP\n"
  24.    brakuje_danych=true;
  25.  }
  26.  if (formularz.twp.value == ""){
  27.    napis += "- Termin ważności paszportu\n"
  28.    brakuje_danych=true;
  29.  }
  30.  if (formularz.norweski.value == ""){
  31.    napis += "- Norweski numer identyfikacyjny\n"
  32.    brakuje_danych=true;
  33.  }
  34.  if (formularz.adres.value == ""){
  35.    napis += "- Adres\n"
  36.    brakuje_danych=true;
  37.  }
  38.  if (formularz.kod_pocztowy.value == ""){
  39.    napis += "- Kod pocztowy\n"
  40.    brakuje_danych=true;
  41.  }
  42.  if (formularz.miejscowosc.value == ""){
  43.    napis += "- miejscowosc\n"
  44.    brakuje_danych=true;
  45.  }
  46.  if (formularz.data_ur.value == ""){
  47.    napis += "- Data urodzenia\n"
  48.    brakuje_danych=true;
  49.  }
  50.  if (formularz.telefon1.value == ""){
  51.    napis += "- Telefon stacjonarny\n"
  52.    brakuje_danych=true;
  53.  }
  54.  if (formularz.polisa.value == ""){
  55.    napis += "- Polisa ubezpieczeniowa III filaru\n"
  56.    brakuje_danych=true;
  57.  }
  58.  if (formularz.numer_obuwia.value == ""){
  59.    napis += "- Numer obuwia\n"
  60.    brakuje_danych=true;
  61.  }
  62.  if (formularz.pesel.value.length != 11){
  63.    napis += "\nNiepoprawny pesel\n"
  64.    brakuje_danych=true;
  65.  }
  66.  if (!formularz.klauzula.checked){
  67.    napis += "\nMusisz wyrazić zgodę na przetwarzanie danych osobowych\n"
  68.    brakuje_danych=true;
  69.  }
  70.  if (!brakuje_danych)
  71.    formularz.submit();
  72.  else
  73.    alert ("Nie wypełniłeś następujących pól:\n" + napis);
  74. }
  75. </script>
  76. </head>
  77. <body>
  78.  
  79. <?php
  80.  
  81. if(!empty($_POST['klauzula'])) {
  82. ///// zapisywanie, wgrywanie itp..
  83. } else {
  84.  
  85. <form method="post" action="#">
  86.    <table style="border-collapse: collapse">
  87.        <tr>
  88.            <td width="300" style="font-family: Verdana; font-size: 10px;"><strong>Imię</strong></td>
  89.            <td><input type="text" name="imie" size="55" style="font-family: Verdana; font-size: 10px;"></td>
  90.        </tr>
  91.        <tr>
  92.            <td width="300" style="font-family: Verdana; font-size: 10px;"><strong>Nazwisko</strong></td>
  93.            <td><input type="text" name="nazwisko" size="55" style="font-family: Verdana; font-size: 10px;"></td>
  94.        </tr>
  95.        <tr>
  96.            <td width="300" style="font-family: Verdana; font-size: 10px;"><strong>Pesel</strong></td>
  97.            <td><input type="text" name="pesel" size="55" style="font-family: Verdana; font-size: 10px;"></td>
  98.        </tr>
  99.        <tr>
  100.            <td width="300" style="font-family: Verdana; font-size: 10px;"><strong>NIP</strong></td>
  101.            <td><input type="text" name="nip" size="55" style="font-family: Verdana; font-size: 10px;"></td>
  102.        </tr>
  103.        <tr>
  104.            <td width="300" style="font-family: Verdana; font-size: 10px;"><strong>Termin ważności paszportu</strong></td>
  105.            <td><input type="text" name="twp" size="55" style="font-family: Verdana; font-size: 10px;"></td>
  106.        </tr>
  107. ///// USUNĄŁEM TROCHĘ TYCH PÓL, BO NIE CHCIAŁ SIĘ ZMIEŚCIĆ POST
  108.        <tr>
  109.            <td></td>
  110.            <td><input type="submit" value="Wyślij" onClick="przetwarzaj_dane()" style="font-family: Verdana; font-size: 10px;"></td>
  111.        </tr>
  112.    </table>    
  113. </form>
  114. ';
  115.  
  116. }
  117.  
  118. ?>
  119.  
  120. </body>
  121. </html>
Go to the top of the page
+Quote Post
skowron-line
post
Post #13





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


No przecież napisałem.
Kod
<form method="post" action="#">


zamień na
Kod
<form method="post" action="#" ronSubmit="return przetwarzaj_dane()">


a z submita usun tego onClick -a
Go to the top of the page
+Quote Post
in5ane
post
Post #14





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


OK, zobaczę ;-)

@edit: to samo jest nadal. Po kliknięciu w alercie OK dane z formularza mi uciekają i trzeba kliknąć wstecz. Proszę o jakąś sensowną odpowiedź. Pozdrawiam ;-)

Ten post edytował in5ane 21.02.2009, 11:23:30
Go to the top of the page
+Quote Post
krzysiekk
post
Post #15





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

Ostrzeżenie: (0%)
-----


zobacz na to moze co pomoże
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4.  
  5.  
  6. <body class="twoColElsRtHdr">
  7. <div id="container">
  8.  
  9.  
  10. <div id="mainContent">
  11.  
  12.  
  13. <script type="text/javascript">
  14. //<![CDATA[
  15. function validate_PPForm(frm) {
  16. var value = '';
  17. var errFlag = new Array();
  18. var _qfGroups = {};
  19. _qfMsg = '';
  20.  
  21. value = frm.elements['pesel'].value;
  22. if (value == '' && !errFlag['pesel']) {
  23. errFlag['pesel'] = true;
  24. _qfMsg = _qfMsg + '\n - Proszę podać PESEL';
  25. }
  26.  
  27. value = frm.elements['pesel'].value;
  28. var regex = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/;
  29. if (value != '' && !regex.test(value) && !errFlag['pesel']) {
  30. errFlag['pesel'] = true;
  31. _qfMsg = _qfMsg + '\n - PESEL powinien składac się tylko z cyfr';
  32. }
  33.  
  34. value = frm.elements['pesel'].value;
  35. if (value != '' && value.length > 11 && !errFlag['pesel']) {
  36. errFlag['pesel'] = true;
  37. _qfMsg = _qfMsg + '\n - Pesel jest zadługi';
  38. }
  39.  
  40. value = frm.elements['pesel'].value;
  41. if (value != '' && value.length < 11 && !errFlag['pesel']) {
  42. errFlag['pesel'] = true;
  43. _qfMsg = _qfMsg + '\n - Pesel jest zakrótki';
  44. }
  45.  
  46. if (_qfMsg != '') {
  47. _qfMsg = 'Formularz zawiera błędy:' + _qfMsg;
  48. _qfMsg = _qfMsg + '\nProszę poprawić błędy!';
  49. alert(_qfMsg);
  50. return false;
  51. }
  52. return true;
  53. }
  54. //]]>
  55. </script>
  56.  
  57.  
  58.  
  59. <div id="rejestracja">
  60. <form action="/www/index.php" method="post" name="PPForm" id="PPForm" onsubmit="try { var myValidator = validate_PPForm; } catch(e) { return true; } return myValidator(this);">
  61. <div id="naglowek">Protokół przekazania.</div>
  62. <div id="group">
  63. <input name="_qf_PPForm_next" value="Dalej" type="submit" />
  64. </div>
  65.  
  66.  
  67. <div id="all"> <div class="label"></div><div class="element"></div> </div>
  68.  
  69.  
  70. <div id="all"> <div class="label">Dane osobowe</div><div class="element"></div> </div>
  71.  
  72.  
  73. <div id="all"> <div class="label">Imię:</div><div class="element"><input size="50" class="rule" name="imie" type="text" /></div> </div>
  74.  
  75.  
  76. <div id="all"> <div class="label">Nazwisko:</div><div class="element"><input size="50" class="rule" name="nazwisko" type="text" /></div> </div>
  77.  
  78.  
  79. <div id="all"> <div class="label">Nr identyfikacjny Abonenta:</div><div class="element"><input size="15" name="nrabonenta" type="text" /></div> </div>
  80.  
  81.  
  82. <div id="all"> <div class="label">PESEL:</div><div class="element"><input size="12" class="rule" name="pesel" type="text" /></div> </div>
  83.  
  84.  
  85. <div id="all"> <div class="label">Regon:</div><div class="element"><input size="50" name="regon" type="text" /></div> </div>
  86.  
  87.  
  88. <div id="all"> <div class="label">Seria i nr Dowodu Osobistego:</div><div class="element"><input size="10" name="nrdowodu" type="text" /></div> </div>
  89.  
  90.  
  91. <div id="all"> <div class="label">Nip:</div><div class="element"><input size="11" name="nip" type="text" /></div> </div>
  92.  
  93.  
  94. <div id="all"> <div class="label">Adres Zameldowania</div><div class="element"></div> </div>
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101. </form>
  102. <p></p>
  103. </div>
  104.  
  105. <!-- end #mainContent --></div>
  106. <!-- This clearing element should immediately follow the #mainContent div in order to force the #container div to contain all child floats --><br class="clearfloat" />
  107. <div id="footer">
  108. <p></p>
  109. <!-- end #footer --></div>
  110. <!-- end #container --></div>
  111. </body>
  112. </html>
Go to the top of the page
+Quote Post
skowron-line
post
Post #16





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat(in5ane @ 21.02.2009, 11:20:42 ) *
OK, zobaczę ;-)

@edit: to samo jest nadal. Po kliknięciu w alercie OK dane z formularza mi uciekają i trzeba kliknąć wstecz. Proszę o jakąś sensowną odpowiedź. Pozdrawiam ;-)


Kod
if( brak_danych != '' ){
   alert ("Nie wypełniłeś następujących pól:\n" + napis);
return false;
}
return true;


Ten post edytował skowron-line 21.02.2009, 12:24:12
Go to the top of the page
+Quote Post
in5ane
post
Post #17





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


@skowron-line: dzięki, działa ;-)
Go to the top of the page
+Quote Post
krzysiekk
post
Post #18





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 13.03.2006
Skąd: Jaworze

Ostrzeżenie: (0%)
-----


proszę tu masz resztę sobie dorób chyba o to ci chodzi to dotyczy tylko pesela


  1. <a href="http://mkmnet.pl/kklima/Noname1.html">FORM</a>
Go to the top of the page
+Quote Post
in5ane
post
Post #19





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


OK, dzięki Tobie też.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 03:45