Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> javascript sprawdzanie wyboru pola <SELECT> i IE
mpps
post 29.09.2006, 19:02:52
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


witam,
może ktoś z Was mi powie, dlaczego to poniżej działa w Operze a w IE nie?

  1. if(document.formzgl.prodagd.value=='' || document.formzgl.prodagd.value=='----------' || document.formzgl.prodagd.value=='--| naprawa gwarancyjna' || document.formzgl.prodagd.value=='--| naprawa pogwarancyjna'){
  2. alert('Proszę wybrać producenta AGD.');
  3. document.formzgl.prodagd.focus();
  4. return false;
  5. }


instrukcja ma zadanie sprawdzać, co zostało wybrane w polu <SELECT>.
jeśli któryś z wpisów, to ma wyrzucać alert.
czy spowodowane to jest złą składnią czy tym, że IE obsługuje JS "na swój sposób"? mad.gif

pozdrawiam
marcin


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
wipo
post 30.09.2006, 13:32:58
Post #2





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Spróbuj pozamykać warunku IF w oddzielne nawiasy. Może to pomoże.
Tak pozatym to troche kiepska składnia (FF nie wyrzuca Ci ostrzeżeń - to znaczy Warningów)?

moim znamien powinieneś dać
if ((document.forms['formzgl'].prodagd.value=='coś')||(document.forms['formzgl'].prodagd.value=='coś')){
//cos tam
}


--------------------
Go to the top of the page
+Quote Post
mpps
post 30.09.2006, 16:37:51
Post #3





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


Probowałem też w ten sposób (zamykając IF-y w osobne nawiasy) - dla Opery jest to bez różnicy.
Wiem, że Opera mocno wspomaga niedokształconych w pisaniu skryptów i przymyka Oko na drobne błędy... winksmiley.jpg
Nawet, jeśli włączę w Operze opcję otwierania konsoli w momencie wystąpienia błędu w JS, to nic mi nie wyrzuca, więc (teoretycznie) ze skryptem jest wszystko w porządku...
Nie wiem, szczerze mówiąc, jaka powinna być prawidłowa składnia.
Spotkałem się właśnie z taką składnią.
Co do zastosowania
  1. forms['formzgl']

, to dla Opery też to nie robi różnicy...
Nawet, jeśli zostawię jeden warunek:
  1. if(document.formzgl.prodagd.value=='')

to w IE nie działa.
Czyściłem oczywiście pamięć podręczną przeglądarki po każdej zmianie wprowadzanej w pliku ze skryptem, żeby nie było, że ładuje stary skrypt winksmiley.jpg

Dzięki za poradę!
Może masz (inni oczywiście też winksmiley.jpg ) jeszcze jakieś pomysły, bo mi się wyczerpały...

pozdrawiam
marcin


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
Zajec
post 30.09.2006, 20:02:39
Post #4





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

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


W pełni poprawna składnia to:
Kod
document.forms['formzgl'].elements['prodagd'].value
chociaż to nie rozwiąże problemu. Błąd musi chybależeć gdzieś indziej.

Próbowałeś przed linijką z if() zrobić coś takiego:
Kod
alert(document.forms['formzgl'].elements['prodagd'].value);
questionmark.gif Dostajesz w IE alert z wartością pola formularza?

Jak coś, to podaj kod HTML formularza oraz sposób wywołania funkcji i jej pełny kod.
Go to the top of the page
+Quote Post
wipo
post 30.09.2006, 21:42:06
Post #5





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


a napewno dobre wartosci badasz z pola select?

spróbuj może
Kod
alert(document.forms['formzgl'].elements['prodagd'].text);


--------------------
Go to the top of the page
+Quote Post
mpps
post 1.10.2006, 08:13:17
Post #6





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


@wipo
  1. alert(document.forms['formzgl'].elements['prodagd'].text);

wyrzuca alert undefined.

@Zajec
  1. alert(document.forms['formzgl'].elements['prodagd'].value);

wyrzuca pusty alert w IE, i alert z prawidłową wartością w Operze... mad.gif

mój zapis
  1. alert(document.formzgl.prodagd.value);

działa tak samo jak Twój, a więc chyba można też w ten sposób pisać guitar.gif
ale my nie o tym...

różnica jest tylko taka, że IE nieprawidłowo przepuszcza dalej, natomoast Opera prawidłowo zatrzymuje wykonywanie skryptu na tym polu (po wyrzuceniu alertu ustawiam na tym polu fokus).

podaję kod formularza:
  1. <SELECT NAME="prodagd">
  2. <OPTION>----------</OPTION>

i podpięty skrypt:
  1. alert(document.formzgl.prodagd.value);
  2. if(document.formzgl.prodagd.value=='----------'){
  3. alert('Proszę wybrać producenta AGD.');
  4. document.formzgl.prodagd.focus();
  5. return false;
  6. }


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
wipo
post 1.10.2006, 08:17:21
Post #7





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Zamień document.....value na text albo daj w polu
<option value="jakas wartosc"> text </option>
i wtedy badaj value
text podaje Ci opis pola a value jego wartość


--------------------
Go to the top of the page
+Quote Post
mpps
post 1.10.2006, 08:52:36
Post #8





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


@wipo jesteś geniuszem! biggrin.gif
podsunąłeś mi pomysł, który okazał się kluczem...

powinno być:
  1. <SELECT NAME="prodagd">
  2. <OPTION value="----------">----------</OPTION>

i sprawdzenie:
  1. if(document.formzgl.prodagd.value=='----------'){
  2. alert('Proszę wybrać producenta AGD.');
  3. document.formzgl.prodagd.focus();
  4. return false;
  5. }


a co było błędem?
sprawdzałem value, którego nie określiłem w option (w ogóle go nie dałem) party.gif

a tak na marginesie, to chyba powinno być odwrotnie:

Cytat(wipo @ 1.10.2006, 09:17:21 ) *
[..]
text podaje Ci opis pola a value jego wartość

a nie tak?
text podaje Ci wartość pola a value jego opis


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
wipo
post 1.10.2006, 08:55:57
Post #9





Grupa: Zarejestrowani
Postów: 856
Pomógł: 19
Dołączył: 30.08.2005
Skąd: 100lica

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


Nie do końca
Kod
<option value="wartość"> Opis </option>
            ^^^^^^    ^^^^^^
              value          text

Chyba będzie to czytalne

Ten post edytował wipo 1.10.2006, 08:56:39


--------------------
Go to the top of the page
+Quote Post
mpps
post 1.10.2006, 09:25:51
Post #10





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


withstupidsmiley.gif
oczywiście masz rację...
przecież value to inaczej wartość...


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
Zajec
post 1.10.2006, 11:03:12
Post #11





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

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


Sprawdzę to zachowanie Opery, jeśli faktycznie dzieje się tak w dokumencie strict to zgłoszę jako bug.

A gdyby ktoś chciał sprawdzać text, to należy użyć konstrukcji

.elements['pole'].innerText
Go to the top of the page
+Quote Post
mpps
post 1.10.2006, 12:58:22
Post #12





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 14.03.2003
Skąd: Szczecin

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


no właśnie...
skąd opera wiedziała, jaki był wybór, jeśli nie miała na podstawie czego sprawdzać?!
tzn. sprawdzałem value, a przecież nie była ona określona dla <option>, bo jej w ogóle nie wstawiłem?
brała pod uwagę text?

ale rokendrol... blink.gif


--------------------
www.mpps.pl
park maszynowy: apache 2.2.22 | php 5.4.0 | MySQL 5.0.10 | phpMyAdmin 3.5.0 | notepad ++ | pilsner urquell
Go to the top of the page
+Quote Post
Zajec
post 1.10.2006, 15:26:38
Post #13





Grupa: Zarejestrowani
Postów: 1 086
Pomógł: 8
Dołączył: 10.12.2003

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


Cytat(mpps @ 1.10.2006, 13:58:22 ) *
no właśnie...
skąd opera wiedziała, jaki był wybór, jeśli nie miała na podstawie czego sprawdzać?!
tzn. sprawdzałem value, a przecież nie była ona określona dla <option>, bo jej w ogóle nie wstawiłem?
brała pod uwagę text?

ale rokendrol... blink.gif
Tak właśnie robiła. Niestety to są efekty prób bycia kompatybilnym z IE. Czasami aż przerasta IE.
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: 3.05.2025 - 05:33