Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Jak przekazać zmienne do funkcji za pomocą onsubmit?
ublizzard
post 6.01.2012, 13:14:19
Post #1





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 17.12.2011
Skąd: Lublin

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


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. }


--------------------
Darmowy katalog ->http://katalogus.cba.pl
Go to the top of the page
+Quote Post
gorden
post 6.01.2012, 13:27:33
Post #2





Grupa: Zarejestrowani
Postów: 486
Pomógł: 101
Dołączył: 27.06.2010

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


...i w czym problem?
Go to the top of the page
+Quote Post
ublizzard
post 6.01.2012, 13:30:22
Post #3





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 17.12.2011
Skąd: Lublin

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


Wypisuje mi w alercie:
Kod
[object HTMLFormElement]


--------------------
Darmowy katalog ->http://katalogus.cba.pl
Go to the top of the page
+Quote Post
Mackos
post 6.01.2012, 13:35:57
Post #4





Grupa: Zarejestrowani
Postów: 362
Pomógł: 44
Dołączył: 10.06.2009

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


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.


--------------------
WebLemon.pl - projektowanie stron www, reklama i PR w internecie - Adwords, Facebook.
Go to the top of the page
+Quote Post
ublizzard
post 6.01.2012, 14:14:36
Post #5





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 17.12.2011
Skąd: Lublin

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


Niestety to nie są zdefiniowane funkcje, wykakuje
Kod
undefined


--------------------
Darmowy katalog ->http://katalogus.cba.pl
Go to the top of the page
+Quote Post
mortus
post 6.01.2012, 14:28:01
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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?
Go to the top of the page
+Quote Post
mortus
post 6.01.2012, 14:51:23
Post #7





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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ą".
Go to the top of the page
+Quote Post
ublizzard
post 6.01.2012, 16:30:31
Post #8





Grupa: Zarejestrowani
Postów: 40
Pomógł: 1
Dołączył: 17.12.2011
Skąd: Lublin

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


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;


Ten post edytował ublizzard 6.01.2012, 15:59:18


--------------------
Darmowy katalog ->http://katalogus.cba.pl
Go to the top of the page
+Quote Post
mortus
post 6.01.2012, 16:45:07
Post #9





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


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

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:35