Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: odwołanie do elementów formularza input text
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
john_doe
Witam

mam formularz
  1. <form action="edit.php" method="POST" id="editCartForm" onSubmit="ValidateForm();" >';
  2.  
  3.  
  4. while( $row = mysql_fetch_array( $result ) )
  5. {
  6. print '<tr>';
  7.  
  8. print '<td>' . $row[0] . '</td>';
  9. print '<td>' . $row[1] . '</td>';
  10. print '<td><input type="text" size="3" name="qty[' . $row[0] . ']" value="'.$_SESSION['koszyk'][$row[0]].'" style="text-align: center;" /></td>';
  11. print '<td>' . $row[3] . '</td>';
  12. print '<td>' . $_SESSION['koszyk'][$row[0]] * $row[3] . '.</td>';
  13.  
  14. print '</tr>';
  15. }
  16. print '<tr>
  17. <td align="center" colspan="6">
  18. <input type="submit" name="submit" value="Zmien" />
  19. <input type="button" value="Rezygnuj" onClick="document.location.href=\'add.php?action=view\'" />
  20. </td>
  21. </tr>';
  22.  
  23. print '</table></form>';


chcę go przed wysłaniem walidować pod względem czy wpisano liczbę całkowitą
  1. [/php]
  2. document.forms['editCartForm'].elements['qty[]'].length


dostaję
Błąd: document.forms.editCartForm.elements['qty[]'] is undefined
Plik źródłowy: http://127.0.0.1/Jukon/offers/editForm.php
Wiersz: 159

generalnie chce użyć petli for

  1. function integer_validate(src)
  2. {
  3. var regex = /^[\-]{0,1}[0-9]{1,8}$/;
  4. return regex.test(src);
  5. }
  6.  
  7. function ValidateForm()
  8. {
  9. var i;
  10.  
  11. //for ( i = 0 ; document.forms['editCartForm'].elements.length ; i++ )
  12. //{
  13. alert(document.forms['editCartForm'].elements['qty[]'].length);
  14. //}
  15.  
  16. //var inputValues = document.forms['editCartForm'].elements['qty[16]'].value;
  17.  
  18. //alert(inputValues);
  19.  
  20. //if(integer_validate(document.forms['editCartForm'].qtyy[i].value))
  21. // {
  22. // alert('ok');
  23. // }else {
  24. // alert ('zle zle zle');
  25. // }
  26.  
  27. }


pozdrawiam
ziqzaq
[JAVASCRIPT] pobierz, plaintext
  1. for ( i = 0 ; document.forms['editCartForm'].elements.length ; i++ )
  2. {
  3. alert(document.forms['editCartForm'].elements[i].value.length);
  4. }
[JAVASCRIPT] pobierz, plaintext
john_doe
dzięki zigzag tak już kombinowałem lecz w ten sposób lece po wszystkich elementach forma a chciałbym tylko po inputach o name=qty[] i nie po ich dlugosci tylko ilosc smile.gif
ziqzaq
1. Sam używałeś length, więc tak samo dałem (wiem, że chodzi ci o liczby całkowite, ale to nie był to gotowiec).
2.1) Zostawiasz html tak jak masz i używasz: substring, lub regex do rozpoznania nazwy elementu (el.name).
2.2). Zmieniasz html z <input ... name="qts[liczba]" ... /> na <input ... name="qts[]" ... /> i wtedy używasz document.forms['editCartForm'].elements['qts[]']
Pozdrawiam

//Edit, pisałem na szybkiego więc doprecyzuję
ad. 2.1) Chodzi o wykrycie nazwy tablicy (bez nawiasów) w pętli for i wtedy operowanie na takim elemencie.
john_doe
zrobiłem tak
  1. function integer_validate(src)
  2. {
  3. var regex = /^[\-]{0,1}[0-9]{1,8}$/;
  4. return regex.test(src);
  5. }
  6.  
  7. function ValidateForm()
  8. {
  9. var i;
  10.  
  11. for ( i = 0 ; document.forms['editCartForm'].elements ; i++ )
  12. {
  13. if(document.forms['editCartForm'].elements[i].name.substring(0,3) == 'qty')
  14. {
  15. if(integer_validate(document.forms['editCartForm'].elements[i].value))
  16. {
  17. alert('ok');
  18. }else {
  19. alert ('zle zle zle');
  20. return false;
  21. }
  22. }
  23. }
  24. }


z małym ale, że tak i tak wysyła mi formularz. Mimo, że dałem return false sad.gif
ziqzaq
Hehehe kopiowałem od ciebie i co? smile.gif
[JAVASCRIPT] pobierz, plaintext
  1. for ( i = 0 ; document.forms['editCartForm'].elements.length ; i++ ) // nie!
  2. for ( i = 0 ; i < document.forms['editCartForm'].elements.length ; i++ ) // tak!
[JAVASCRIPT] pobierz, plaintext

I w html
  1. <input type="submit" value="Ok" onclick="return ValidateForm();" />
john_doe
dodałem returna i działa ok
jednak jak zmienie na

  1.  
  2.  
  3. for ( i = 0 ; i < document.forms['editCartForm'].elements.length ; i++ ) // tak!


nie działa w ogóle hehhee..nie kumam
ziqzaq
Wiesz ten wcześniejszy kod się zapętlał w nieskończoność, więc ten nowy raczej musi zostać.
W sumie masz już kod to podam jak ja mam (tylko lekkie różnice):
[JAVASCRIPT] pobierz, plaintext
  1. function validate() {
  2. var regex = /^[-]?\d{1,8}$/;
  3. for ( var i = 0 ; i < document.forms['editCartForm'].elements.length ; i++ )
  4. {
  5. var el = document.forms['editCartForm'].elements[i];
  6. if (el.name.substring(0, 3) == 'qts')
  7. {
  8. if ( ! regex.test(el.value)) return false;
  9. }
  10. }
  11. return true;
  12. }
[JAVASCRIPT] pobierz, plaintext

Sprawdzane: Opera, Firefox.
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.