Autor | Zpráva | ||
---|---|---|---|
Jigfreed Profil * |
Mám problém s osetrenim formulare proti spatne zadanym hodnotam pomoci javascriptu.....
Zde je html soubor s formularem a cesta k javascriptu(ulozeni scriptu je take v poradku stejne jako pojmenovani), Opravdu netusim v cem je problem.....Pri ukladani javascriptu se me to pta na jakysi kodovani textu, davam predvolene tzn Unicode, ale to by melo mit vliv pouze na hacky carky, ty v promenych nemam. <html><head><title>formular</title> <script src="osetreni.js" type="text/javascript"></script> </head><body> <FORM onSubmit="return j(this) && cisla(this) && e(this.email.value)" ACTION="objednavka1.php" NAME="objednavka1"><TABLE><TR> <td> Jméno:</td> <td><input type=text name=jmeno></td></tr><tr> <TD>Přijmení:</TD> <TD><INPUT TYPE="text" NAME="prijmeni"></TD> </TR> <TR> <TD>Město:</TD> <TD><INPUT TYPE="text" NAME="mesto"></TD> </TR> <TR> <TD>Ulice,č,p.:</TD> <TD><INPUT TYPE="text" NAME="ulicecp"></TD> </TR> <TR> <TD>PSČ:</TD> <TD><INPUT TYPE="text" size=4 NAME="psc"></TD> </TR> <TR> <TD>Telefon:</TD> <TD><INPUT TYPE="text" value=+420 size=12 NAME="telefon"></TD> </TR> <TR> <TD>E-mail:</TD> <TD><INPUT TYPE="text" size=20 NAME="email"></TD> </TR> <TR> <TD>Kód zboží:</TD> <TD><INPUT TYPE="text" value=kod size=5 NAME="kod"></TD> </TR> <TR> <TD>Množství:</TD> <TD><INPUT TYPE="text" size=20 NAME="mnozstvi"></TD> </TR> <TR> <TD>Poznámka:</TD> <TD><TEXTAREA NAME="Vzkaz" COLS="50" ROWS="3" >Sem napište poznámku prodávajícímu.</TEXTAREA> </TR> </TABLE> <INPUT TYPE="submit" VALUE="Odešli"> <INPUT TYPE="reset" VALUE="Vymaž"> </FORM> </BODY> </HTML> A ZDE JE TEN JAVASCRIPT(NELEKAT): // OSETRENI MAIL function e(email) { invalidChars = " /:,;" if (email == "") { // hodnota nesmà být prázdná alert("ZapomnÄ›li jste na e-mail!!!") return false } for (i=0; i<invalidChars.length; i++) { // does it contain any invalid characters? badChar = invalidChars.charAt(i) if (email.indexOf(badChar,0) > -1) { alert("Zadal jste Å¡patné znaky") return false } } atPos = email.indexOf("@",1) // there must be one "@" symbol if (atPos == -1) { alert("A kde je @??") return false } if (email.indexOf("@",atPos+1) != -1) { // and only one "@" symbol alert("Váš e-mail osahuje vÃÂce @") return false } periodPos = email.indexOf(".",atPos) if (periodPos == -1) { // and at least one "." after the "@" alert("Váš e-mail nemá teÄÂku .") return false } // OSETRENI JP function j(k) { if (k.jp.value == "") { // cannot be empty alert("Vyplňte prosím jméno a příjmení") return false } if (k.ucp.value == "") { // cannot be empty alert("Vyplňte prosím ulici a číslo popisné") return false } if (k.mesto.value == "") { // cannot be empty alert("Vyplňte prosím město") return false } return true } // OSETRENI PSC function cisla(x) { delka=x.length; if (delka!=5) return false; for (i=0; i<delka; i++) { if (x.charAt(i) < "0") return false; if (x.charAt(i) > "9") return false; } return true } function p(f) { _psc=f.psc.value; if (_psc == "") { alert("Vyplňte PSČ!") f.psc.focus() return false } if (cisla(_psc)) { return true } alert("Není správný formát PSČ!") f.psc.focus() f.psc.select() return false } Moderátor Chamurappi: Kód prosím vkládej mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Jigfreed Profil * |
#2 · Zasláno: 11. 5. 2009, 17:43:46
Nikdo?:(
|
||
Chamurappi Profil |
#3 · Zasláno: 11. 5. 2009, 18:25:55
Reaguji na Jigfreeda:
„Nikdo?:(“ Tady není chat. Jestli to měl být pokus o kouzelné slovíčko, tak zkus místo „nikdo“ používat „prosím“, možná pak budeme tvému spěchu více naslouchat. „Mám problém s osetrenim formulare“ Jaký problém? Když tak pospícháš, mohl bys alespoň popsat, co přesně ti nejde, co jsi zkoušel atd. Do funkce cisla předáváš jako argument celý <form> (v this), ale tělo té funkce naznačuje, že by asi chtěla pracovat s value nějakého <input>u. Mimochodem, nazývat si funkce e, j a p není moc moudré. |
||
Jigfreed Profil * |
#4 · Zasláno: 11. 5. 2009, 18:33:31
Problem je ten, ze se pste nic nedeje, zadna chybova hlaska, ale zadnej script, nic se proste nestane, data tecou dale....Ten javascript neni napsan mnou, ale vypada celkem dobre, kontroloval jsem spravnost cesty ke scriptu i syntaktycky chyby... bez vysledku, na nic sem neprisel...
|
||
Jigfreed Profil * |
#5 · Zasláno: 11. 5. 2009, 18:34:48
Prece neni mozne aby neslo ani jedno osetreni... kdyby byla chyba jen ve funkci cisla, tak by ostatni funkce sli nebo ne?
|
||
Chamurappi Profil |
#6 · Zasláno: 11. 5. 2009, 18:42:21 · Upravil/a: Chamurappi
Reaguji na Jigfreeda:
„kdyby byla chyba jen ve funkci cisla, tak by ostatni funkce sli nebo ne?“ To záleží na povaze chyby. V tomto případě by asi šly. Moc nerozumím tvé funkci j. Testuješ formulářová políčka „jp“ a „ucp“, ale ve formuláři máš „jmeno“, „prijmeni“ a „ulicecp“. V j tedy vznikne chyba, která zastaví vykonávání ostatních funkcí. |
||
Jigfreed Profil * |
#7 · Zasláno: 11. 5. 2009, 18:59:55
Opravil jsem tu funkci j, ale stale se nic nedeje, ani tuk.
|
||
Jigfreed Profil * |
#8 · Zasláno: 11. 5. 2009, 19:01:00
Ten script by mel nabehnou ihned, co bude neco spatne, nebo ma jisty propojeni s v tomhle pripade objednavka.php??
|
||
peta Profil |
#9 · Zasláno: 13. 5. 2009, 10:48:19
Jigfreed
v prvni rade link na stranku. neni stranka, nejsou chybove hlasky. Ten kod nahore zobrazuje chybne cestinu. jestlize si stranku vytvorim ja, pak mame kazdy jinou stranku s jinym kodem. Takze, zkopiroval jsem vse do jednoho nnn.htm, prepsal action a pise mi Js konzola (firefox - nastroje - chybova konzola), ze ti tam chybi zavorka } Bez zavorky povazuje kod za chybny, nespusti se a vysledkem je, ze se formular normalne zpracuje. Kdyz tam tu zavorku dam, tak to hlasi nejaky error existence j() Kdyz prepisi j( na jjj( tak se nic nezmeni, ted nenasel jjj. Kazdopadne souhlas, nazev funkci min 3 znaky, idealne 5-8. Hm, tak ta zavorka nechybi na konci ale pred funkci e() pak se zmeni chybova hlaska na k.jp is not defined pridam <INPUT TYPE="text" NAME="jp"> a vse funguje Chamurappi Ha, uz jsem te nakazil :) |
||
lucas Profil * |
#10 · Zasláno: 13. 5. 2009, 21:38:59
Osetrovanie chyb formulara cez javascript je zbytocne, pretoze tu kontrolu musis urobit aj v PHP. Takze zbytocne robit jednu vec dvakrat.
|
||
Chamurappi Profil |
#11 · Zasláno: 13. 5. 2009, 22:00:07
Reaguji na lucase:
Nesmysl. Kontrola na straně klienta ušetří návštěvníkovi načítání další stránky, není zbytečná. |
||
Časová prodleva: 15 let
|
0