Autor Zpráva
joe
Profil
Zdravím,

Mám problém, který vůbec nechapu. Bohužel to mám v projektu, který mám jen na localhostu, takže nemohu ukázat. Ale mám funkci podobnou této:

function check(form) {
if(form.username.value == "") { // doplněno viz. Chamurappi
alert("...");
form.username.setFocus();
return false;
}
}

a pak v HTML:

<form ... onsubmit="return check(this);">

</form>


-----------------------

Problém je ten, že když nic do toho inputu nezadám, zobrazí se mi MessageBox (alert), ale formulář se po odkliknutí odešle. Když před ty podmínky dám do té funkce return false; tak se nic nestane a formulář se neodesílá, tak kde je problém?

Díky
Chamurappi
Profil
Reaguji na joa:
Funkce nevrací false, protože form.username není rovno prázdnému řetězci. Je to totiž objekt, pravděpodobně <input>. Prázdnému řetězci se může rovnat až jeho value.
joe
Profil
Chamurappi
Díky za upozornění, v js samozřejmě value mám a stejně se odesílá.
Chamurappi
Profil
Reaguji na joa:
form.username.setFocus();
Nemělo by to být jen form.username.focus()? Tohle není VB.
MagicPowa
Profil
<!--
form_submitted=false;
function ValidateForm(formular)
{
if(formular.UZIVJMENO.value == '')
{
alert('....')
formular.UZIVJMENO.focus()
form_submitted=false
return false
return true
}
}
-->

html do formu: onsubmit="return ValidateForm(this);"
---------------------------------------------------------------------- -
tohle mám odzkoušení a funguje to tak jak má
joe
Profil
Chamurappi
Ježišmarjá dík :-) Já ve VB už moc nedělám, ale tohle jsem nečekal. Zajímavý, že mi ani jeden prohlížeč nehlásil chybu. Díky moc.

MagicPowa
Tak to se mi moc nezdá, nechápu proč je tam proměnná form_submitted? Jedině, že bys pak ještě kontroloval, jestli je true/false, třeba to je jen ukázka, pak to chápu. Ale proč máš return false a následně return true, to nechápu. Ten první return hned ukončí funkci.
peta
Profil
joe
"Zajímavý, že mi ani jeden prohlížeč nehlásil chybu."

Tak to pekne kecas, co tahle hlaska z JS konzoly Firefoxu?

<script>

function check(form) {
if(form.username.value == "") { // doplněno viz. Chamurappi
alert("...");
form.username.setFocus();
return false;
}
}
</script>

<form action=# onsubmit="return check(this);">
<input name=username type=text>
<input type=submit>
</form>

Chyba: form.username.setFocus is not a function
Zdrojový soubor: file:///C:/Documents%20and%20Settings/webmaster/Plocha/xxx.htm?#
Řádek: 6

A co treba IE a jeho JS konzola?
radek 6: Objekt tuto vlastnost nepodporuje.
(nastroje - moznosti internetu - upresnit - zobrazovat oznameni pri chybe ve skriptu)
joe
Profil
peta
Když napíšu, že nezobrazovalo, tak nezobrazovalo.
Protože po odeslání formuláře došlo k přesměrování na stránku, kde byl js zase v pořádku. Každopádně to je už vyřešené.
peta
Profil
joe
Na tom vubec nezalezi, zda tam je neco v poradku. Kdyz si tu konzolu zapnes v IE (viz uvedeny postup) a rozkliknes ve FF, tak tu chybu 100% zobrazi. Pokud potom neco bezi, tak to prida jako dalsi chybu v poradi.
Zkratka je treba umet konzolu pouzivat. Default je to v IE vyskrtnute, aby to neotravovalo uzivatele, ale ve FF staci jen otevrit okenko JS konzoly a dat F5, nic vic.

Ale tak ok. Ja jen, ze priste ti to stejne napisu, jako vsem, co hlasi js konzola a ze chci odkaz na stranku.
joe
Profil
peta
Tak dobře, asi je to tak jak říkáš. Mám nastaveno zobrazovaní chyb js v IE, resp. mi je to ukazuje. Ale tentokrát se mi žádná chyba neobjevila, nevím jak je to možné. Každopádně až budu mít zase takový podobný problém s js, vzpomenu si na tvůj návod ;-) Ale jak jsem psal, ted už je to stará záležitost naštěstí. Když koukám do kódu dlouho a nevím kde je chyba, radší ho ukážu jinému, ten tu chybu najde. Že se to způsobuje právě ta funkce focus() by mě nenapadlo, protože znám jiný zápis funkce z VB. Ale díky ti samozřejmě také patří! :-)
peta
Profil
joe
O diky mi neslo, spis o postup v krizi. Hlavne, kdyz IE nic nehlasi, zkusit FF a jeho konzolu, na tu je spoleh.
Dat to do fora je tez reseni. Idealne pridat odkaz na stranku, protoze muj radek 6 muze byt tvuj radek 32.
joe
Profil
peta
Chapu, vsak jsem to ve FF zkoušel taky, firebug mám taky...

protoze muj radek 6 muze byt tvuj radek 32.
To je snad jasné, nejsem zase takový amatér jak myslíš ;-)

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: