Autor Zpráva
iru
Profil *
ahoj, mám potíž s kontrolou formuláře před odesláním. Kontrola formuláře funguje do té doby, než se narazí na <textarea>. Zde už se hláška o chybě nevypíše a formulář se odešle aniž by v textovém poli cokoli bylo.

Zde je ošetření formuláře:

<script type="text/javascript">
<!--
//kontrola formuláoe
function controlValue() {
var mySubmit=true;

if (document.forms[0].plemeno.value=="") {
mySubmit=false;
alert("Nezadali jste plemeno psa!!");
}
if (document.forms[0].pohlavi.value=="") {
mySubmit=false;
alert("Nezadali jste pohlaví psa!!");
}
if (document.forms[0].stari.value=="") {
mySubmit=false;
alert("Nezadali jste stáří psa!!");
}
if (document.forms[0].barva.value=="") {
mySubmit=false;
alert("Nezadali jste barvu psa!!");
}
if (document.forms[0].vady.value=="") {
mySubmit=false;
alert("Nezadali jste vady psa!!");
}
if (document.forms[0].popis.value=="") {
mySubmit=false;
alert("Nezadali jste popis psa!!");
}

if (document.forms[0].foto.value=="") {
mySubmit=false;
alert("Nevybrali jste soubor!!");
}


var f = document.getElementById('f'); //f - je "id" u pole typu file.
if (!/(^|[\\\/])[a-z0-9_.-]+$/.test(f.value)) {
alert('Název souboru obsahuje nepovolené znaky.');
mySubmit=false;
}



if (mySubmit) {
document.forms[0].submit();
}
}


//-->
</script>


a formulář:

<form action="inzerat1.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="0" cellpadding="3">
<tr>
<td align="left">Plemeno:</td>
<td align="left"><input type="text" name="plemeno" size="40"/></td>
</tr>
<tr>
<td align="left">Pohlaví:</td>
<td align="left"><input type="text" name="pohlavi"size="40" /></td>
</tr>
<tr>
<td align="left" valign="top">Stáří:</td>
<td align="left"><input type="text" name="stari" size="40" /></td>
</tr>
<tr>
<td align="left">Barva:</td>
<td align="left"><input type="text" name="barva" size="40"/></td>
</tr>
<tr>
<td align="left" valign="top">Popis:</td>
<td align="left"><textarea name="popis" cols="31" rows="5"> </textarea></td>
</tr>
<tr>
<td align="left">Fotografie:</td>
<td align="left"><input type="file" id="f" name="foto" size="40"/></td>
</tr>

</table><br />
<input type="submit" onclick="controlValue()" value="Uložit" />
</form>
peta
Profil *
http://mracek.xhosting.cz/real/real.php - vlozit nabidku

1. proc kazdou chybu vypisujes zvlast?
2. proc nepouzivas udalost onsubmit="" jako vsichni?
3. proc zarovnavas td na left, kdyz normalne vlevo je?
4. proc tam nemas vady? Nezda se ti divne, kdyz ti JS konzola hlasi, ze VADY neexistuje (Firefox - nastroje - JS konzola, podobne IE, Opera, ...)
5. usetril bys i spoustu casu, kdyby
- sis prosel priklady na jakpsatweb - javascript
- ses podival do JS konzoly
- si pridal odkaz na stranku, aby jem nemusel to pracne kopirovat do souboru a doplnovat dalsi tagy do uplne validity, abych mohl konecne zacit hledat chybu

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>
<head>
<title>aaa</title>
<script type="text/javascript">
<!--
//kontrola formuláoe
function controlValue(xForm) {
var f=xForm;
var z=1;
var t="";
if (f.plemeno.value=="") { z=0; t+="\nNezadali jste plemeno psa!!"; }
if (f.pohlavi.value=="") { z=0; t+="\nNezadali jste pohlaví psa!!"; }
if (f.stari.value =="") { z=0; t+="\nNezadali jste stáří psa!!"; }
if (f.barva.value =="") { z=0; t+="\nNezadali jste barvu psa!!"; }
if (f.vady.value =="") { z=0; t+="\nNezadali jste vady psa!!"; }
if (f.popis.value =="") { z=0; t+="\nNezadali jste popis psa!!"; }
if (f.foto.value =="") { z=0; t+="\nNevybrali jste soubor!!"; }

if (!/(^|[\\\/])[a-z0-9_.-]+$/.test(f.foto.value)) {
z=0; t+="\nNázev souboru obsahuje nepovolené znaky.";
}

if (z==0) {alert(t);}
return z==0?false:true;
}


//-->
</script>
</head>

<body>

<form name="forminzerat" action="inzerat1.php" method="post" enctype="multipart/form-data" onsubmit="return controlValue(this)">
<table border="0" cellspacing="0" cellpadding="3">
<tbody valign="top">
<tr>
<td>Plemeno:</td>
<td><input type="text" name="plemeno" size="40"/></td>
</tr>
<tr>
<td>Pohlaví:</td>
<td><input type="text" name="pohlavi" size="40"/></td>
</tr>
<tr>
<td>Stáří:</td>
<td><input type="text" name="stari" size="40" /></td>
</tr>
<tr>
<td>Barva:</td>
<td><input type="text" name="barva" size="40"/></td>
</tr>
<tr>
<td>Vady:</td>
<td><input type="text" name="vady" size="40"/></td>
</tr>
<tr>
<td>Popis:</td>
<td><textarea name="popis" cols="31" rows="5"> </textarea></td>
</tr>
<tr>
<td>Fotografie:</td>
<td><input type="file" id="f" name="foto" size="40"/></td>
</tr>
</tbody>

</table><br />
<input type="submit" value="Uložit" />
</form>

</body>
</html>
peta
Profil *
iru pro zajimavost, ma to o 100 znaku mene nez tva verze ikdyz tam mam vsechny tagy.
S tim ID u foto jsem to nepochopil, takze pokud by to nefungovalo, tak si ho tam zas pridej.
Zarovnani doleva TD se da realizovat krasne pres TABLE class="neco" a to zarovnani uz si uz das na co chces.
Leo
Profil
Regularni vyrazy na vsechna kontrolovana policka formulare, ty si ulozit do asociativniho pole kde klicem je name daneho policka, projit cyklem, a mate to elegantneji. Leo
peta
Profil *
Leo Zajimave reseni, mozna nekdy pouziji, zatim by to bylo pro me potreby velice nevhodne, protoze jsem potreboval kontrolovat vice vlastnosti. Pro vsechno psat regularni vyrazy by se mi tedy nechtelo :)
(treba mail[""] mail[0..255] mail[@] mail[vyraz pro mail] a vsechny 4 pripady chci okomentovat. Ano, lze dat komentar jen 1 spolecny, ale pro mene zkuseneho uzivatele bude treba tezke pochopit, ktere z podminek nesplnuje)
zero
Profil *
díky, javascript mě dělá potíže, jsem v něm neustálý začátečník a lama.
Toto téma je uzamčeno. Odpověď nelze zaslat.