Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Sprawdzanie wypełnienia pól formularza przed wysyłką
Forum PHP.pl > Forum > Gotowe rozwiązania
trifek
Witam serdecznie,
Na stronie mam formularz.
Pod formularzem mam link:
  1. <a class="btn btn-openid text" href="link_do_powrotu.html" onclick="return confirm('Czy napewno chcesz zapisać jako poprawny?')"> Zapisz poprawny </a>


W tej chwili działa to tak, że po kliknięciu powyższego linku wyskakuje okienko z pytaniem. Po wybraniu TAK - użytkownik zostaje przekierowany na stronę link_do_powrotu.html.

Chciałbym żeby jeszcze przed przejściem na podstronę link_do_powrotu.html skrypt sprawdził czy znajdujący się na stronie formularz (składający się z pól: input text, select, textarea, radio) jest kompletny
(każdy ma jakąś wartość). Jeśli wszystko jest wypełnione - to wtedy przechodzimy na powyższy link. Jeśli jednak któraś wartość nie byłaby wypełniona - to powinien pokazać się komunikat błędu.

Na stronie mam tylko jeden formularz.

Wie ktoś może jak to zrobić?

Bardzo proszę o pomoc
rafkon1990
Atrybut required wystarczyć.
trifek
Zapomniałem, Chciałbym uniknąć atrybutu required:)

Poza tym chciałbym żeby było pytanie o to przekierowanie, wtedy sprawdzanie i przekierowanie/alert o błędzie smile.gif
viking
A jest jakiś konkretny powód tego? Wspiera go 99% przeglądarek (według caniuse) i robi to co potrzebujesz.
rafkon1990
w takim razie robisz walidację w javascriptcie


Kod
<script>
function goIfConfirmedAndValid(){
   if(confirm('Czy napewno chcesz zapisać jako poprawny?')){
      // walidacja pól
      if(walidacja_ok){
      return true;
      }
      else {
         alert("Uzupełnij pola ...");
         return false;
      }
   }
   return false;
}
</script>



  1. <a class="btn btn-openid text" href="link_do_powrotu.html" onclick="return goIfConfirmedAndValid();"> Zapisz poprawny </a>


Twój zamysł jest ... niewygodny.

trifek
tak, bo mam formularz składający się z buttona (zapisuje formularz za pomocą tradycyjnego POST'a ) - ten zapis nie wymaga wszystkich pól
Ten link to zwykły <a href=) - za jego pomocą chciałbym zrobić validację + przekierowanie na url - ten zapis ma wymagać wypełnienie wszystkich pól smile.gif

Cytat(rafkon1990 @ 7.11.2016, 10:22:10 ) *
w takim razie robisz walidację w javascriptcie


Kod
<script>
function goIfConfirmedAndValid(){
   if(confirm('Czy napewno chcesz zapisać jako poprawny?')){
      // walidacja pól
      if(walidacja_ok){
      return true;
      }
      else {
         alert("Uzupełnij pola ...");
         return false;
      }
   }
   return false;
}
</script>



  1. <a class="btn btn-openid text" href="link_do_powrotu.html" onclick="return goIfConfirmedAndValid();"> Zapisz poprawny </a>


Twój zamysł jest ... niewygodny.




O coś takiego mi chodziło smile.gif

W jaki sposób dodać do tego w miejscu tego "walidacja_ok" walidację wszystkiego co znajduje się w formularzu (selecty, textarea, texty, radioboxy itp)?
Formularz jest dynamiczny (generowany na podstawie bazy)
rafkon1990
Cytat(trifek @ 7.11.2016, 10:27:51 ) *
tak, bo mam formularz składający się z buttona (zapisuje formularz za pomocą tradycyjnego POST'a ) - ten zapis nie wymaga wszystkich pól
Ten link to zwykły <a href=) - za jego pomocą chciałbym zrobić validację + przekierowanie na url - ten zapis ma wymagać wypełnienie wszystkich pól smile.gif





O coś takiego mi chodziło smile.gif

W jaki sposób dodać do tego w miejscu tego "walidacja_ok" walidację wszystkiego co znajduje się w formularzu (selecty, textarea, texty, radioboxy itp)?
Formularz jest dynamiczny (generowany na podstawie bazy)


  1. var walidacka_ok = true;


Dla każdego dynamicznego pola formularza generujesz walidację tego pola, a jeśli ów pole nie spełnia wymaganych kryteriów, przestawiasz flagę na false i tym samych uniemożliwiasz (teoretycznie tylko) przesłanie formularza .
trifek
Kombinuję coś takiego:
  1. function validateForm() {
  2. var valid = true;
  3. $('.validate-form').each(function () {
  4. if ($(this).val() === '') {
  5. valid = false;
  6. return 0;
  7. }
  8. });
  9. return 1
  10. }
  11.  
  12. function goIfConfirmedAndValid(){
  13. if(confirm('Czy napewno chcesz zapisać jako poprawny?')){
  14. // walidacja pól
  15.  
  16. alert(validateForm());
  17.  
  18. if(validateForm() == 1){
  19. return true;
  20. }
  21. else {
  22. alert("Proszę uzupełnić wszystkie pola!!");
  23. return false;
  24. }
  25. }
  26. return false;
  27. }



ale zawsze wyskakuje mi "1" i następuje przekierowanie (nie widzi pustych pól):/
nospor
return 0 jest w srodku innej funkcji wiec return dotyczy tej srodkowej funkcji a nie twojej glownej... dosc logiczne.

Na koncu nie:
return 1

a:
return valid ? 1 : 0;
trifek
Cytat(nospor @ 7.11.2016, 10:54:58 ) *
return 0 jest w srodku innej funkcji wiec return dotyczy tej srodkowej funkcji a nie twojej glownej... dosc logiczne.

Na koncu nie:
return 1

a:
return valid ? 1 : 0;



coś takiego:
  1. function validateForm() {
  2. var valid = true;
  3. $('.validate-form').each(function () {
  4. if ($(this).val() === '') {
  5. valid = false;
  6. return 0;
  7. }
  8. });
  9. return valid ? 1 : 0;
  10. }
  11.  
  12. function goIfConfirmedAndValid(){
  13. if(confirm('Czy napewno chcesz zapisać jako poprawny?')){
  14. // walidacja pól
  15.  
  16. alert(validateForm());
  17.  
  18. if(validateForm() == 1){
  19. return true;
  20. }
  21. else {
  22. alert("Proszę uzupełnić wszystkie pola!!");
  23. return false;
  24. }
  25. }
  26. return false;
  27. }


questionmark.gifsmile.gif

Jeśli tak, to w dalszym ciągu nie działa sad.gif
nospor
No dobra, a czy twoje pola formularza maja w ogole klase validate-form?
trifek
OK, zadziałało smile.gif


Dziękuję za pomoc smile.gif
nospor
facepalmxd.gif

Skup sie: POLA FORMULARZA a nie FORMULARZ
trifek
Cytat(nospor @ 7.11.2016, 11:22:00 ) *
facepalmxd.gif

Skup sie: POLA FORMULARZA a nie FORMULARZ



Tak, właśnie teraz zauważyłem gafę smile.gif))


viking
Jak już tak robisz (chociaż gotowa klasa validate ma też grupy walidacji,ale ok) to ja bym poszedł drogą dodawania/zdejmowania required. Choćby dlatego że jak sam mówisz form może mieć selecty (które mogą być multiple a wtedy val() zwraca tablicę), checkboxy.
nospor
Cytat
Tak, właśnie teraz zauważyłem gafę
Jak to mowia: lepiej pozno niz wcale wink.gif
trifek
dziękuję za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2020 Invision Power Services, Inc.