Autor | Zpráva | ||
---|---|---|---|
amorekj Profil |
#1 · Zasláno: 17. 4. 2015, 12:46:18
Dobrý den,
chtěl bych se zeptat, jak formulář ověřit, když se neodesílá přes tlačítko, ale přes odkaz. Přikládám kód: <script type="text/javascript"> <!-- function kontrola() { var zprava=""; if(document.getElementsByName("od")[0].value=="" || document.getElementsByName("od")[0].value=="@") {zprava+="Zadejte Váš email\n";} if(document.getElementsByName("predmet")[0].value=="") {zprava+="Zadejte předmět zprávy\n";} if(document.getElementsByName("spam")[0].value!="11") {zprava+="Zadejte správnou odpověď kontroly spamu\n";} if(document.getElementsByName("zprava")[0].value=="") {zprava+="Zadejte Vaši zprávu\n";} if(zprava==""){ document.getElementById('ContactForm').submit(); return true; } // data budou odeslána else { alert(zprava); // zobrazení zprávy o chybách return false; // data nebudou odeslána } } //--> </script> <form action="#!/odeslano" id="ContactForm" name="kontakt" method='post'"> <input type="text" class="input" value="@" maxlength="50" name="od"> <input type="text" class="input" maxlength="50" name="predmet"> <input type="text" class="inputspam" maxlength="2" name="spam"> (kolik je 6 + 5) <textarea name="textarea" cols="1" rows="1" name="zprava"></textarea> <a href="#" class="button1" onClick="document.getElementById('ContactForm').reset()"><strong>Smazat</strong></a> <a href="#" class="button1" onClick="kontrola()"><strong>Odeslat</strong></a> </form> Děkuji všem za rady. |
||
Keeehi Profil |
Nevidím problém.
Je ti doufám jasné, že bez zapnutého javascriptu ten formulář uživatel neodešle a že je to špatně. |
||
amorekj Profil |
#3 · Zasláno: 17. 4. 2015, 13:19:29
Když zmáčknu odkaz a nevyplním nic tak se nic nestane a mělo by to napsat, jaký políčka mám dovyplnit. Chyba tam někde musí být.
Jinak díky za upozornění. Jsem si toho vědom. Beru to tak, že většina lidí javascript má zapnutý. |
||
lionel messi Profil |
amorekj:
„Chyba tam někde musí být.“ Skutočne „tam niekde“ je. Po spustení tvojej ukážky totiž vidím chybu: Type Error: document.getElementsByName(…)[0] is undefined .
Radšej by som dal inputom id a použil document.getElementByID("idecko") . Vieš o tom, že metóda document.getElementByName("nazev") nie je v Opere a IE (netuším, akých verzií presne sa to týka) na 100 % spoľahlivá?
|
||
amorekj Profil |
#5 · Zasláno: 17. 4. 2015, 14:35:04
Když jsem to upravil, že jsem do inputů vložil ID. Po stisku tlačítka mi to píše následující chyby:
Uncaught TypeError: undefined is not a function kontrola onclick Uncaught TypeError: Cannot read property 'slice' of undefined (anonymous function) f.event.handle i.handle.k |
||
lionel messi Profil |
#6 · Zasláno: 17. 4. 2015, 15:44:56
amorekj:
„Po stisku tlačítka mi to píše následující chyby:“ Ukáž predmetný kód funkcie kontrola() a HTML formulára po zmene.
|
||
Chamurappi Profil |
#7 · Zasláno: 17. 4. 2015, 16:47:43
Reaguji na amorkaj:
Co je to za nesmysl používat místo <input> ů odkazy? Fuj.
Použil bych normální <input type="submit"> (podotýkám, že samozřejmě může vypadat jakkoliv, vzhled určuje CSS) a pak dal onsubmit="return kontrola(this)" na <form> . Uvnitř function kontrola(form) bych pak zkoumal form.od.value , form.predmet.value atd., bez jakéhokoliv volání getElementNěco . Žádné document.getElementById('ContactForm').submit() bych také nevolal.
„Beru to tak, že většina lidí javascript má zapnutý.“ Proč se spokojit jen s většinou, když to jde s mnohem menším úsilím udělat mnohem přístupnější? „ Cannot read property 'slice' of undefined “
Tuto chybu ti musí hlásit něco jiného, slice přeci nikde nemáš. Nebo jsi nám neukázal skutečný kód.
„ if(document.getElementsByName("spam")[0].value!="11") {zprava+="Zadejte správnou odpověď kontroly spamu\n";} “
Proč mu ji nevyplníš rovnou sám? Snad nevěříš, že spamovací robot bude narážet na tuto JS kontrolu. Mrkni do zdrojáku této diskuse, je tu antispamové políčko, které rovnou vyplňuje a skrývá skript (takže obtěžuje jen lidi bez zapnutého JS). Reaguji na lionela messiho: „použil document.getElementByID “
Malé D . Ale to amorekj odhalil, jinak by dostával jinou chybovou hlášku.
|
||
amorekj Profil |
#8 · Zasláno: 17. 4. 2015, 16:57:21
Malé D mě zachránilo.
Děkuji: Chamurappi a lionel messi |
||
Časová prodleva: 9 let
|
0