Autor Zpráva
mackopu
Profil
Do formuláře se předchozím skriptem vygeneruje předem neznámý počet inputů pro zadání data se stejným názvem. Validace zadaných dat je vcelku triviální:
<SCRIPT LANGUAGE="JavaScript">

function check(form)
{
re = /^[0-9]{2}.[0-9]{2}.[0-9]{4}$/i; // 00.00.0000
for(var i=0; i<form.datum_kurzu.length; i++) {
str = form.datum_kurzu[i].value;
if (! str.match(re)) {
alert("Nesprávný formát data!");
form.datum_kurzu[i].focus();
form.datum_kurzu[i].style.backgroundColor = "yellow";
return false;
}
}
};
</SCRIPT>

<form action="" method="post" onsubmit="return check(this);">
<p>Datum 1: <input class="input" maxLength="10" size="10" value="16.05.2007" name="datum_kurzu"></p>
<p>Datum 2: <input class="input" maxLength="10" size="10" value="16.05.2007" name="datum_kurzu"></p>
<p><input type="submit" value="Vložit"></p>
</form>

Jak ale tutéž validaci provést, pokud je třeba shodné názvy inputů změnit z datum_kurzu na datum_kurzu[] ?
str = form.datum_kurzu[][i].value; vůbec nefunguje
Předesílám, že tato podoba názvu je nezbytná pro další zpracování formuláře PHP skriptem.
Díky za náměty.
mackopu
Profil
Pro úplnost ještě ukázka nefunkční úpravy:
<SCRIPT LANGUAGE="JavaScript">

function check(form)
{
re = /^[0-9]{2}.[0-9]{2}.[0-9]{4}$/i; // 00.00.0000
for(var i=0; i<form.datum_kurzu[].length; i++) {
str = form.datum_kurzu[][i].value;
if (! str.match(re)) {
alert("Nesprávný formát data v políčku č. " + (i+1) + "!");
form.datum_kurzu[][i].focus();
form.datum_kurzu[][i].style.backgroundColor = "yellow";
return false;
}
}
};
</SCRIPT>

<form action="" method="post" onsubmit="return check(this);">
<p>Datum 1: <input class="input" maxLength="10" size="10" value="16.05.2007" name="datum_kurzu[]"></p>
<p>Datum 2: <input class="input" maxLength="10" size="10" value="16.05.2007" name="datum_kurzu[]"></p>
<p><input type="submit" value="Vložit"></p>
</form>
los
Profil *
form.datum_kurzu[]
zmeň na
form["datum_kurzu[]"]
mackopu
Profil
Tak to je přesně ono. Klobouk dolů, díky moc!
Toto téma je uzamčeno. Odpověď nelze zaslat.

0