| Autor | Zpráva | ||
|---|---|---|---|
| MilanJ Profil |
#1 · Zasláno: 17. 8. 2006, 10:37:39
Na www.tourism-review.com/test/aaa.php mám formulář.
Validaci provádím nejprve JavaScriptem, který je uložen v tomto souboru. Pokud validací projde, zkontroluji před uložením do db vyplnění polí v PHP. Problém: validace JS projde jen v IE, FireFox ji ignoruje a já nevím proč. |
||
| MilanJ Profil |
#2 · Zasláno: 17. 8. 2006, 11:01:56
Zřejmě bude nějaká chybka v JavaScriptu
|
||
| MilanJ Profil |
#3 · Zasláno: 17. 8. 2006, 11:05:07 · Upravil/a: MilanJ
Zkusím vložit JS kód, třeba někdo pozná chybu na první pohled...
function validate(formular_workshops_std) { // smazání všech chybových hlášení, resp. zrušení červeného pozadí chybně vyplněných prvků document.getElementById('provider_email').style.backgroundColor = ''; document.getElementById('warn2_provider_email').style.display = 'none'; document.getElementById('provider_name').style.backgroundColor = ''; document.getElementById('start').style.backgroundColor = ''; document.getElementById('duration').style.backgroundColor = ''; document.getElementById('mode_of_study').style.backgroundColor = ''; document.getElementById('programme_language').style.backgroundColor = ''; document.getElementById('city').style.backgroundColor = ''; document.getElementById('country').style.backgroundColor = ''; document.getElementById('ad_region').style.backgroundColor = ''; document.getElementById('other_input').style.backgroundColor = ''; document.getElementById('programme_type').style.backgroundColor = ''; document.getElementById('travel_segments').style.backgroundColor = ''; document.getElementById('programme_name').style.backgroundColor = ''; var x; /* počítadlo chyb */ x=0; /* pokud zůstane x bez chyby, není ve formuláři chyba */ // pokud není pole formuláře vyplněno, pozadí se změní barvu if (formular_workshops_std.provider_email.value=="") { document.getElementById('provider_email').style.backgroundColor = '#FF0000'; formular_workshops_std.provider_email.focus(); x=1; } else if (window.RegExp) { re = new RegExp("^[^@]+@[^.]+\..+$"); if (!re.test(formular_workshops_std.provider_email.value)) { document.getElementById('provider_email').style.backgroundColor = '#FF0000'; document.getElementById('warn2_provider_email').style.display = ''; formular_workshops_std.provider_email.focus(); x=1; } } if (formular_workshops_std.provider_name.value=="") { document.getElementById('provider_name').style.backgroundColor = '#FF0000'; formular_workshops_std.provider_name.focus(); x=1; } if (formular_workshops_std.start.value=="") { document.getElementById('start').style.backgroundColor = '#FF0000'; formular_workshops_std.start.focus(); x=1; } if (formular_workshops_std.duration.value=="") { document.getElementById('duration').style.backgroundColor = '#FF0000'; formular_workshops_std.duration.focus(); x=1; } if (formular_workshops_std.mode_of_study.value=="") { document.getElementById('mode_of_study').style.backgroundColor = '#FF0000'; formular_workshops_std.mode_of_study.focus(); x=1; } if (formular_workshops_std.programme_language.value=="") { document.getElementById('programme_language').style.backgroundColor = '#FF0000'; formular_workshops_std.programme_language.focus(); x=1; } if (formular_workshops_std.city.value=="") { document.getElementById('city').style.backgroundColor = '#FF0000'; formular_workshops_std.city.focus(); x=1; } if (formular_workshops_std.ad_region.value=="") { document.getElementById('ad_region').style.backgroundColor = '#FF0000'; formular_workshops_std.ad_region.focus(); x=1; } if (formular_workshops_std.country.value=="0") { document.getElementById('country').style.backgroundColor = '#FF0000'; formular_workshops_std.country.focus(); x=1; } if (document.getElementById('otherregion').style.display == 'inline' && formular_workshops_std.other_input.value=="") { document.getElementById('other_input').style.backgroundColor = '#FF0000'; formular_workshops_std.other_input.focus(); x=1; } if (formular_workshops_std.programme_type.value=="") { document.getElementById('programme_type').style.backgroundColor = '#FF0000'; formular_workshops_std.programme_type.focus(); x=1; } if (formular_workshops_std.travel_segments.value=="") { document.getElementById('travel_segments').style.backgroundColor = '#FF0000'; formular_workshops_std.travel_segments.focus(); x=1; } if (formular_workshops_std.programme_name.value=="") { document.getElementById('programme_name').style.backgroundColor = '#FF0000'; formular_workshops_std.programme_name.focus(); x=1; } if (x==1) /* formulář obsahuje chyby */ { return false; } else { return true; } } |
||
| MilanJ Profil |
#4 · Zasláno: 17. 8. 2006, 11:21:38 · Upravil/a: MilanJ
Když vložím jen tenhle kód pro kontrolu prvního políčka formuláře, šlape to.
Jakmile ale přidám další políčko, nefunguje to a JavaScript to jako by úplně vynechá, tak mi to vysvětlete. :-( function validate(formular_workshops_std) { // smazání všech chybových hlášení, resp. zrušení červeného pozadí chybně vyplněných prvků document.getElementById('programme_name').style.backgroundColor = ''; var x; /* počítadlo chyb */ x=0; /* pokud zůstane x bez chyby, není ve formuláři chyba */ // pokud není pole formuláře vyplněno, pozadí se změní barvu if (formular_workshops_std.programme_name.value=="") { document.getElementById('programme_name').style.backgroundColor = '#FF0000'; formular_workshops_std.programme_name.focus(); x=1; } if (x==1) /* formulář obsahuje chyby */ { return false; } else { return true; } |
||
| MilanJ Profil |
#5 · Zasláno: 17. 8. 2006, 12:22:05
Nepoužívám nic, co by nemělo fungovat, mám tedy někde syntaktickou chybu?
|
||
| MilanJ Profil |
#6 · Zasláno: 17. 8. 2006, 13:44:09
Zná FF document.getElementById('programme_name').style.backgroundColor = '#FF0000'; ?
|
||
| RPG Profil |
#7 · Zasláno: 17. 8. 2006, 13:55:09
MilanJ
Zná. |
||
| zivan Profil |
#8 · Zasláno: 17. 8. 2006, 13:57:35 · Upravil/a: zivan
Dej na web jednoduchou stranku se 2 policky a timhle JS, ktery nebezi ve FF. Me nejak unika pouziti toho parametru. Jestli to dobre chapu, tak ke kezdemu prvku pristupujes dvema ruznymi zpusoby. Proc?
Jinak to konecne vraceni hodnoty bych resil elegantnejsim: return (x==0); |
||
| MilanJ Profil |
#9 · Zasláno: 17. 8. 2006, 14:02:55
zivan
Jestli to dobre chapu, tak ke kezdemu prvku pristupujes dvema ruznymi zpusoby. Proc? Nerozumím. :-/ Celý formulář běžel jak měl i pod FF, ale pak jsem zřejmě někde něco ...vím já co? ...nevím :-( |
||
| zivan Profil |
#10 · Zasláno: 17. 8. 2006, 14:12:24 · Upravil/a: zivan
No chapu spravne, ze tohle jsou stejny prvky?
formular_workshops_std.provider_email document.getElementById('provider_email') Nepise ti ve FF konzole nejakou chybu? Nastroje/ Konzola Javascriptu |
||
| MilanJ Profil |
#11 · Zasláno: 17. 8. 2006, 14:23:53
zivan
Ano, je to tak. Konzola mi píše chybu na řádku 179: Chyba: document.getElementById('mode_of_study').style.backgroundColor = ''; has no properties Input s id mode_of_study se ale nijak neliší o jiných na stránce...chyba je jen u tohoto |
||
| MilanJ Profil |
#12 · Zasláno: 17. 8. 2006, 14:25:33
formular_workshops_std.provider_email
document.getElementById('provider_email') Souhlasím, tohle je matoucí. |
||
| zivan Profil |
#13 · Zasláno: 17. 8. 2006, 14:29:12 · Upravil/a: zivan
Nemas tam misto dvou apostrofu jedny uvozovky?
Edit: Jestli jsi to kopiroval, tak ne. Nemas u toho prvku 'mode_of_study' nastaven atribut NAME misto ID ? Zkus nekam dat tu stranku, takhle je to jak pexeso. |
||
| MilanJ Profil |
#14 · Zasláno: 17. 8. 2006, 14:32:37
Nemám...nakonec...mrkni do zdrojáku.
|
||
| zivan Profil |
#15 · Zasláno: 17. 8. 2006, 14:51:34 · Upravil/a: zivan
No ja tam vidim chybu v tom, ze u selectu mas atribut NAME a snazis se na ne pristoupit pres getElementById(). Jak nazev funkce napovida, tak by mela vracet prvek podle ID. To, ze to funguje v IE je chyba prohlizece.
Edit: Podobny problem bude i s tim pristupem bez fce getElementById(). |
||
|
Časová prodleva: 20 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0