Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][PHP]Walidacja formularza w pętli za pomocą javascript
Forum PHP.pl > Forum > Przedszkole
mowmiheniek
Witam,
Chcę prosić o pomoc w rozgryzieniu mojego problemu.
Mam formularz który tworzy się w pętli, a skrypt w javascript sprawdza poprawność pola.
Nie wiem jak w javiascript odwołać się do tak powstałych pól formularza.
Próbowałem wstawić pętle z i odwołać się do tablicy, ale nie przyniosło to efektu.

Dziękuje.


  1. <form method="post" action="...">
  2. <fieldset>
  3. <?php
  4.  
  5. for($i = 1; $i < 5; $i++)
  6. {
  7. echo '<label for="Liczba">Podaj liczbe:</label>';
  8. echo '<input type="text" id="Liczba[$i]" name="Liczba[$i]" value="" /><br>';
  9. }
  10. ?>
  11.  
  12. </fieldset>
  13. </form>
  14.  
  15. <script type="text/javascript">
  16.  
  17. document.forms.onchange = function() {
  18. var dana = this.value;
  19. var wzor = /^[-]?[0-9]+(\.[0-9]+)?/g
  20. if (!wzor.test(dana)) {
  21. alert("Popraw dane");
  22. this.select();
  23. }
  24. }
  25. }
  26. </script>
nvb
Zobacz tak:

echo '<input type="text" id="Liczba[$i]" name="Liczba[$i]" value="" onchange="myFunction()" /><br>';

<script type="text/javascript">

function myFunction(){
tutaj co chcesz zeby sie działo po wywołaniu zdarzenia onchange dla name="Liczba[$i]"

}


</script>

Mam nadzieje, że pomoże smile.gif
mowmiheniek
Po zmianie kodu, po wpisaniu liczb w formę uznaje pola za fałszywe. Nie rozumiem dlaczego się tak dzieje.

  1. <form method="post" action="...">
  2. <fieldset>
  3. <?php
  4. for($i = 1; $i < 5; $i++)
  5. {
  6. echo '<label for="Liczba">Podaj liczbe:</label>';
  7. echo '<input type="text" id="Liczba" name="Liczba[$i]" value="" onchange="myFunction()" /><br>';
  8. }
  9. ?>
  10.  
  11. </fieldset>
  12. </form>
  13.  
  14. <script type="text/javascript">
  15.  
  16. function myFunction() {
  17. var dana = this.value;
  18. var wzor = /^[-]?[0-9]+(\.[0-9]+)?/g
  19. if (!wzor.test(dana)) {
  20. alert("Popraw dane");
  21. }
  22. }
  23. </script>
Kishin
Po pierwsze to raczej nie zadziala wzor.test(dana);
pewnie chodzi Ci o dana.match(wzor);

po drugie przy pobieraniu wartości też masz błąd jeżeli korzystasz z jquery to w ten sposób: $(this).val()
jezeli chcesz zwykłym js to musisz wziasc element po nazwie bo id masz wszystkie takie same co tez nie jest zbyt poprawne smile.gif

mowmiheniek
wzor.test(dana) działa gdy pole formularza nie jest puszczone w pętli.
chciałbym zwykłym js to rozwiązać. czytam podobne przykłady i próbuje się dobrać do pól formularza ale mi nie wychodzi.
Kishin
  1. <form method="post" action="...">
  2. <fieldset>
  3. <?php
  4. for($i = 1; $i < 5; $i++)
  5. {
  6. echo '<label for="Liczba">Podaj liczbe:</label>';
  7. echo '<input type="text" id="Liczba" name="Liczba[$i]" value="" onchange="myFunction(this)" /><br>';
  8. }
  9. ?>
  10.  
  11. </fieldset>
  12. </form>
  13.  
  14. <script type="text/javascript">
  15.  
  16. function myFunction(dana) {
  17.  
  18. var wzor = /^[-]?[0-9]+(\.[0-9]+)?/g
  19. if (!wzor.test(dana.value)) {
  20. alert("Popraw dane");
  21. }
  22. }
  23. </script>
  24.  



zwróć uwage że ten skrypt wprawdzie wypluje błąd gdy wpiszesz np asdasdsa ale gdy wpiszesz 1weqweq to juz błędu nie bedzie wink.gif
mowmiheniek
Już poprawione: /^[-]?[0-9]+(\.[0-9]+)?$/g
Dziękuję bardzo
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-2025 Invision Power Services, Inc.