Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: onSubmit return flase w FF działa w IE niet :/
Forum PHP.pl > Forum > Po stronie przeglądarki
TomASS
Kodziki w JS:
Kod
function validateForm(AForm)
{
    if(!(AForm.oskont_imie_nazwisko.value && AForm.oskont_telefon.value && AForm.mz_nazwa.value && AForm.mz_miasto.value && AForm.mz_kod.value && AForm.mz_ulica.value && AForm.normal_od.value && AForm.normal_do.value && AForm.ID_typ.value && AForm.ilosc.value)){

        if (!(AForm.oskont_imie_nazwisko.value)) AForm.oskont_imie_nazwisko.style.border="1px solid #ff9900;";
        else AForm.oskont_imie_nazwisko.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.oskont_telefon.value)) AForm.oskont_telefon.style.border="1px solid #ff9900;";
        else AForm.oskont_telefon.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.mz_nazwa.value)) AForm.mz_nazwa.style.border="1px solid #ff9900;";
        else AForm.mz_nazwa.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.mz_miasto.value)) AForm.mz_miasto.style.border="1px solid #ff9900;";
        else AForm.mz_miasto.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.mz_kod.value)) AForm.mz_kod.style.border="1px solid #ff9900;";
        else AForm.mz_kod.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.mz_ulica.value)) AForm.mz_ulica.style.border="1px solid #ff9900;";
        else AForm.mz_ulica.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.normal_od.value)) AForm.normal_od.style.border="1px solid #ff9900;";
        else AForm.normal_od.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.normal_do.value)) AForm.normal_do.style.border="1px solid #ff9900;";
        else AForm.normal_do.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.ID_typ.value)) AForm.ID_typ.style.border="1px solid #ff9900;";
        else AForm.ID_typ.style.border="1px solid #7B9EBD;";
        
        if (!(AForm.ilosc.value)) AForm.ilosc.style.border="1px solid #ff9900;";
        else AForm.ilosc.style.border="1px solid #7B9EBD;";
        
        alert('Musisz wypełnić wszystkie pola.');
        return false;
    }
    else{
        return true;
    }
}


I dalej HTML:
  1. <form method="POST" id="formularz" onsubmit="return validateForm(this);">

W IE wysyła formularz zawsze :/ W FF wysyła jeśli są wypełnione odpowiednie pola (czyli ok). - co jest?
devnul
dla IE powinieneś mieć onclick na submicie z tą samą funckją - ot taki kolejny brak
TomASS
No niestety :/ zmieniłem troszkę funkcję na:
Kod
function $(id){
    return document.getElementById(id);
}

function validateForm(AForm)
{
    if(!($(AForm).value && $(AForm).oskont_telefon.value && $(AForm).mz_nazwa.value && $(AForm).mz_miasto.value && $(AForm).mz_kod.value && $(AForm).mz_ulica.value && $(AForm).normal_od.value && $(AForm).normal_do.value && $(AForm).ID_typ.value && $(AForm).ilosc.value)){

        if (!($(AForm).oskont_imie_nazwisko.value)) $(AForm).oskont_imie_nazwisko.style.border="1px solid #ff9900;";
        else $(AForm).oskont_imie_nazwisko.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).oskont_telefon.value)) $(AForm).oskont_telefon.style.border="1px solid #ff9900;";
        else $(AForm).oskont_telefon.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).mz_nazwa.value)) $(AForm).mz_nazwa.style.border="1px solid #ff9900;";
        else $(AForm).mz_nazwa.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).mz_miasto.value)) $(AForm).mz_miasto.style.border="1px solid #ff9900;";
        else $(AForm).mz_miasto.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).mz_kod.value)) $(AForm).mz_kod.style.border="1px solid #ff9900;";
        else $(AForm).mz_kod.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).mz_ulica.value)) $(AForm).mz_ulica.style.border="1px solid #ff9900;";
        else $(AForm).mz_ulica.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).normal_od.value)) $(AForm).normal_od.style.border="1px solid #ff9900;";
        else $(AForm).normal_od.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).normal_do.value)) $(AForm).normal_do.style.border="1px solid #ff9900;";
        else $(AForm).normal_do.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).ID_typ.value)) $(AForm).ID_typ.style.border="1px solid #ff9900;";
        else $(AForm).ID_typ.style.border="1px solid #7B9EBD;";
        
        if (!($(AForm).ilosc.value)) $(AForm).ilosc.style.border="1px solid #ff9900;";
        else $(AForm).ilosc.style.border="1px solid #7B9EBD;";
        
        alert('Musisz wypełnić wszystkie pola.');
        return false;
    }
    else{
        return true;
    }
}

i mam tak:
  1. <form method="POST" id="formularz" onsubmit="return validateForm('formularz');">
  2. <input onClick="return validateForm('formularz');" type="submit" name="action" value="Zgłoś">

dalej nie działa pod IE (pod FF działa)
akubiczek
Na pewno działa (pod IE6 i IE7). Sprawdź co ci zwraca validateForm('formularz').

Poza tym ma być onclick, a nie onClick
devnul
@akubiczek: to czy z duzej czy z małej to akurat pikuś (tak wiem ze powinno być małymi) - przeglądarki to olewają sikiem prostym jak narazie więc to błędu nie czyni.

a ja chyba wiem gdzie błąd leży:
masz tak
Kod
if (!($(AForm).mz_kod.value)) $(AForm).mz_kod.style.border="1px solid #ff9900;";
        else $(AForm).mz_kod.style.border="1px solid #7B9EBD;";

a powinno być tak
Kod
if (!($(AForm).mz_kod.value)) $(AForm).mz_kod.style.border="1px solid #ff9900;"
        else $(AForm).mz_kod.style.border="1px solid #7B9EBD;";


lub tak
Kod
if (!($(AForm).mz_kod.value)) {$(AForm).mz_kod.style.border="1px solid #ff9900;";}
        else {$(AForm).mz_kod.style.border="1px solid #7B9EBD;";}


widzisz tą subtelną różnice?
TomASS
Cytat
@Na pewno działa (pod IE6 i IE7). Sprawdź co ci zwraca validateForm('formularz').

No u mnie jakoś na pewno nie tongue.gif

Cytat
Poza tym ma być onclick, a nie onClick

A pomyśl czy mi to pomoże i czy ma to tutaj jakieś znaczenie smile.gif

Cytat
widzisz tą subtelną różnice?

Różnicę widzę, ale wszystko to co podałeś sprowadza się do jednego, bez różnicy na nawiasy i średnik na końcu linii. Tak czy siak nie widzę najsubtelniejszej różnicy - nie działa nadal - tak, siak czy owak :/

Dzięki
JaRoPHP
Kiedyś miałem podobny problem i rozwiązałem to w sposób:

Zamiast
  1. if (!(AForm.oskont_imie_nazwisko.value))
dałem
  1. if ((AForm.oskont_imie_nazwisko.value == ""))
Zajec
Może testujesz na IE7? Przeczytaj tekst porneL'a o onclick i pochodnych: http://pornel.net/onclick

Jest tam wzmianka o bugu zaktualizowanego IE7.
Norbas
Nie piszesz zbyt optymalnego kodu JS i HTML winksmiley.jpg Moja propozycja poniżej.

HTML:
Kod
<form method="post" action="" onsubmit="return validateForm(this)">
<!-- wstawić pola formularza -->
<input type="submit" value="Wyślij" />
</form>


JS:
Kod
function validateForm(f){
var i,e=f.elements,puste=false
var pola=['oskont_telefon','mz_nazwa','mz_miasto','mz_kod','mz_ulica','normal_od','normal_do','ID_typ','ilosc']
for(i=pola.length-1; i>=0; --i)
    if(e[pola[i]].value!='') e[pola[i]].style.border='1px solid #7B9EBD'
    else{
        puste=true
        e[pola[i]].style.border='1px solid #ff9900'
    }
if(puste) alert('Musisz wypełnić wszystkie pola')
return !puste}


Do funkcji jako parametr przekazywany jest obiekt, a nie nazwa formularza
TomASS
Cytat
Może testujesz na IE7? Przeczytaj tekst porneL'a o onclick i pochodnych: http://pornel.net/onclick


Testowałem na IE6 smile.gif A tekst już dawno mam w ulubionych smile.gif

Cytat
Nie piszesz zbyt optymalnego kodu JS i HTML

Z JS się zgodzę, że nie jest optymalny smile.gif HTML jest smile.gif

Dzięki - Twój kod działa pod IE i FF smile.gif
Thx
akubiczek
Cytat(TomASS @ 6.04.2007, 19:47:49 ) *
No u mnie jakoś na pewno nie tongue.gif

Chodziło mi o samego HTMLa, bo to jego zmieniałeś w kolejnym poście.

Cytat(TomASS @ 6.04.2007, 19:47:49 ) *
A pomyśl czy mi to pomoże i czy ma to tutaj jakieś znaczenie smile.gif

Pomoże ci się stać lepszym w tym co robisz. Ale nie chcesz, nie słuchaj tongue.gif
Maksymus007
  1. onClick="return event.returnValue=costam()"

to u mnie dziala, na wszystkich przegladarkach, wlacznie z IE7 i 6
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.