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 *
Nikdo?:(
Chamurappi
Profil
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 *
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 *
Prece neni mozne aby neslo ani jedno osetreni... kdyby byla chyba jen ve funkci cisla, tak by ostatni funkce sli nebo ne?
Chamurappi
Profil
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 *
Opravil jsem tu funkci j, ale stale se nic nedeje, ani tuk.
Jigfreed
Profil *
Ten script by mel nabehnou ihned, co bude neco spatne, nebo ma jisty propojeni s v tomhle pripade objednavka.php??
peta
Profil
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 *
Osetrovanie chyb formulara cez javascript je zbytocne, pretoze tu kontrolu musis urobit aj v PHP. Takze zbytocne robit jednu vec dvakrat.
Chamurappi
Profil
Reaguji na lucase:
Nesmysl. Kontrola na straně klienta ušetří návštěvníkovi načítání další stránky, není zbytečná.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: