Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript][PHP]Walidacja formularza w pętli za pomocą javascript
mowmiheniek
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2014

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


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>


Ten post edytował mowmiheniek 24.01.2015, 01:15:36
Go to the top of the page
+Quote Post
nvb
post
Post #2





Grupa: Zarejestrowani
Postów: 28
Pomógł: 3
Dołączył: 6.01.2015

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


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 (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mowmiheniek
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2014

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


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>
Go to the top of the page
+Quote Post
Kishin
post
Post #4





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


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 (IMG:style_emoticons/default/smile.gif)

Go to the top of the page
+Quote Post
mowmiheniek
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2014

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


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.
Go to the top of the page
+Quote Post
Kishin
post
Post #6





Grupa: Zarejestrowani
Postów: 148
Pomógł: 17
Dołączył: 20.12.2011

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


  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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
mowmiheniek
post
Post #7





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 16.12.2014

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


Już poprawione: /^[-]?[0-9]+(\.[0-9]+)?$/g
Dziękuję bardzo
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: 15.09.2025 - 03:27