Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript]Jak przekazać zmienne do funkcji za pomocą onsubmit?
Forum PHP.pl > Forum > Przedszkole
ublizzard
Chciałbym za pomocą zdarzenia onsubmit przekazać nazwę formularza oraz wartość pole. Stworzyłem coś takiego
  1. <form action="rejestracja.php" onsubmit="return validateForm('dodaj', 'f1')" name="dodaj" method="get">
  2. <p>Dodaj stronę: <input type="text" name="f1" /><input type="submit" value="Wyślij" /></p>
  3. </form>

a funkcja validateForm wygląda tak:

  1. function validateForm(formName, fieldName){
  2. alert (formName);
  3. alert (fieldName);
  4. }
gorden
...i w czym problem?
ublizzard
Wypisuje mi w alercie:
Kod
[object HTMLFormElement]
Mackos
Nie znam się dobrze na js ale obstawiałbym że powinno być bardziej
Kod
function validateForm(formName, fieldName){
    alert (formName.value);
    alert (fieldName.value);
}

Albo coś w tym stylu, lub przy samym onsubmit.
ublizzard
Niestety to nie są zdefiniowane funkcje, wykakuje
Kod
undefined
mortus
W jakiej przeglądarce Ci to nie działa, bo przetestowałem w najnowszych FF, IE i Chrome i wszystko jest w porządku.
Może gdzieś wcześniej przypisujesz zmiennym obiekty HTML DOM?
mortus
Cytat(ublizzard @ 6.01.2012, 14:42:03 ) *
A żeczywiście działa, gdzieś musiałem literówkę tylko zrobić, ale nie wiem gdzie.


Dlaczego koledzy perfidnie kłamią? Przecież jako argument funkcji przekazujesz dwie wartości tekstowe, a nie obiekty HTML o zdefiniowanej wartości value. Dodatkowo element <form> atrybutu value nie posiada, więc powyższy skrypt nawet jakby chciał, nie ma prawa działać. Jeśli problem był, to leżał gdzieś indziej, a kolega @ublizzard mógłby jednak łaskawie wyjaśnić, co poprawił, a nie ściemniać, że jakiś tam fragment kodu, który ma niewiele wspólnego z problemem (i nie ma prawa działać) definitywnie ten problem rozwiązał.

No cóż - "wszyscy kłamią".
ublizzard
Kurde masz rację mortus. Tylko że ja nie kłamię, a niechcący mi się zacytował zły tekst i nie zauważyłem tego, chciałem zacytować twój. Usunąłem już ten zły wątek,żeby w błąd nie wprowadzał.
Oczywiście, to co napisał Mackos nie działa. Działa to:
  1. <form action="rejestracja.php" onsubmit="return validateForm('dodaj', 'f1')" name="dodaj" method="get">
  2. <p>Dodaj stronę: <input type="text" name="f1" /><input type="submit" value="Wyślij" /></p>
  3. </form>

  1. function validateForm(formName, fieldName){
  2. alert (formName);
  3. alert (fieldName);
  4. var str = document.forms[formName].f1.value;
  5. var url = /([a-z0-9]{1})((([a-z0-9-]*[-]{2})|([a-z0-9])*|([a-z0-9-]*[-]{1}[a-z0-9]+))*)((\.[a-z0-9](([a-z0-9-]*[-]{2})|([a-z0-9]*)|([a-z0-9-]*[-]{1}[a-z0-9]+))+)*)(\.([a-z0-9]{2,6})){0,1}((:[0-9]){0}|(:[1-9]{1}[0-9]*))/;
  6. var http = /^(http):\/\//;
  7. if (str==''){
  8. alert ('Podaj adres strony');
  9. document.forms[formName].focus();
  10. return false;
  11. } else{
  12. if (str.match(url)){
  13.  
  14. if (str.match(http)){
  15. str = str.replace("http://", "");
  16. alert('Dodajesz stronę: \n\n'+str);
  17. }else{
  18. alert('Dodajesz stronę: \n\n'+str);
  19. }
  20. document.forms[formName].f1.value = str;
  21. return true;
  22. } else{
  23. alert('Niepoprawny adres strony\n\n'+str);
  24. document.forms[formName].focus();
  25. return false;
  26. };
  27. }
  28. }
te dwa alerty są tymczasowo w celu weryfikacji.
Mam teraz z kolei taki problem:
Gdy poprawię w 4 linii zamiast f1 wpiszę zmienną fieldName to nie pojawia mi się alert('Dodajesz stronę: \n\n'+str);

Już znalazłem sposób:
Kod
var str = document.forms[formName].elements[fieldName].value;
mortus
W takim razie przepraszam za błędnie wysunięte wnioski. Gdybyś od razu pokazał cały kod, to może mniej by z tym było zachodu.
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.