Autor Zpráva
kareljakcip
Profil
Dobrý den,

prosím Vás potřebuji poradit.
Napsal sem si takový script na validaci formulare v JS.
<script type="text/javascript">
        function validate(form)
        {
            
            fail = validatee_mail(form.e_mail.value)
            fail += validateheslo(form.heslo.value)
            fail += validateheslo_znovu(form.heslo_znovu.value)
            fail += validatereg_den(form.reg_den.value)
            fail += validatereg_mes(form.reg_mes.value)
            fail += validatereg_rok(form.reg_rok.value)
            fail += validatejmeno(form.jmeno.value)
            fail += validateprijmeni(form.prijmeni.value)
            fail += validatemesto(form.mesto.value)
            fail += validateulice(form.ulice.value)
            fail += validatecp(form.cp.value)
            fail += validatepsc(form.psc.value)
            fail += validatetelefon(form.telefon.value)
            
            if (fail == ""){
                return true 
            }
                
            else {
                alert(fail);
                return false
            }
                
        
        }
        
    
    </script>
<script type="text/javascript">
        function validatee_mail(field){
            if(field == "") return "Nezadali jste e-mail.\\n"
                else if (!((field.indexOf(".") > 0) &&
                            (field.indexOf("@") > 0)) || 
                            /[^a-zA-Z0-9.@_-]/.test(field))
                return "E-mail je neplatný.\\n"
                
            return ""
                    
        }
        function validateheslo(field){
            if (field == "") return "Nezadali jste heslo.\\n"
            else if (field.lenght<6) return "Heslo musí být delší než 6 znaků.\\n"
            else if (!/[a-z]/.test(field)|| ! /[A-Z]/.test(field)||!/[0-9]/.test(field)) return "Heslo musí obsahovat pouz a-z A-Z a 0-9.\\n"
            return ""
        }
        function validateheslo_znovu(field){
            if (field == "") return "Zadejte heslo znovu.\\n"
            else if (field != form.heslo_znovu.value) return "Hesla se neshoduji.\\n"
            return ""
        }
        
        function validatereg_den(field){
            if (field == "") {
              return "Nezadali jste den narození.\\n"  
              return "" 
            
            
            
        }
        function validatereg_mes(field){
            if (field == "") return "Nezadali jste měsíc narození.\\n"
            return ""
        }
        function validatereg_rok(field){
            if (field == "") return "Nezadali jste rok narození.\\n"
            return ""
        }
        
        function validatejmeno(field){
            if(field == "") return "Nezadali jste Jméno.\\n"
            return ""
        }
        
        function validateprijmeni(field){
            if(field == "") return "Nezadali jste Příjmení.\\n"
            return""
        }
        function validatemesto(field){
            if(field == "") return "Nezadali jste Město.\\n"
            return ""
        }
        function validateulice(field){
            if(field == "") return "Nezadali jste Ulici, pokud nemáte ulici zadejte Město.\\n"
            return ""
        }
        function validatecp(field){
            if (field == "") return "Nezadali jste čislo popisné.\\n"
            return ""
        }
        function validatepsc(field){
            if (field == "") return "Nezadali jste PSČ.\\n"
            return ""
        }
        function validateop(field){
            if(field == "") return "Pokud chcete soutěžit musíte souhlasit z podmínkami"
            return ""
        }
    
    </script>
zde je kousek z formuláře
<form id="form" name="form" action="adduser.php" method="post" onsubmit="return validate(this)">

jenže to nevohodi ten alert a pokračuje to jako by se nic nedělo.

Neví někdo čím to je?
_es
Profil
kareljakcip:
Mal by si dať dostatočné informácie na zistenie chyby, najlepšie „živú“ ukážku. Rôzne príkazy by mali byť radšej vždy oddeľované bodkočiarkou (;), aby nebolo treba uvažovať, či ide o jedno alebo viacriadkový príkaz. Okrem toho si prečítaj aj radu Časté potíže, zajímavosti a poučné debaty » Používejte var.
Chamurappi
Profil
Reaguji na karlajakcipa:
if (field.lenght<6)
Spíš length. Ale tohle nevadí.
Vadí, že ti nesedí uzávorkování bloků, přesněji řečeno funkci validatereg_den nikde neukončuješ, protože závorka na řádku 31 ukončuje if z řádku 25.

if (!/[a-z]/.test(field)|| ! /[A-Z]/.test(field)||!/[0-9]/.test(field)) 
Výrazy by šlo spojit do /[a-z0-9]/i.test(field).

if (field.lenght<6) return "Heslo musí být delší než 6 znaků.\\n"
Než 5 znaků. Nebo bys měl přidat za menšítko rovnítko.
kareljakcip
Profil
uz sem to poupravoval a furt nic :(
.viz uprava
function validate(form)
        {
            
            var fail = validatee_mail(form.e_mail.value);
            var fail += validateheslo(form.heslo.value);
            var fail += validateheslo_znovu(form.heslo_znovu.value);
            var fail += validatereg_den(form.reg_den.value);
            var fail += validatereg_mes(form.reg_mes.value);
            var fail += validatereg_rok(form.reg_rok.value);
            var fail += validatejmeno(form.jmeno.value);
            var fail += validateprijmeni(form.prijmeni.value);
            var fail += validatemesto(form.mesto.value);
            var fail += validateulice(form.ulice.value);
            var fail += validatecp(form.cp.value);
            var fail += validatepsc(form.psc.value);
            var fail += validatetelefon(form.telefon.value);
            
            if (var fail == ""){
                return true 
            }
                
            else {
                alert(var fail);
                return false
            }
                
        
        }
        
    
    </script>
 <script type="text/javascript">
        function validatee_mail(var field)
        {
            if(var field == ""){
               return "Nezadali jste e-mail.\\n"; 
            } 
            
                else if
                    (!((var field.indexOf(".") > 0) &&
                            (var field.indexOf("@") > 0)) || 
                            /[^a-zA-Z0-9.@_-]/.test(var field))
                            {
                return "E-mail je neplatný.\\n";
                }
                
            else {return "";}
                    
        }
        function validateheslo(var field){
            if (var field == ""){ return "Nezadali jste heslo.\\n";}
            
            else if
                (var field.length<7){ return "Heslo musí být delší než 6 znaků.\\n";}
                
            else if (!/[a-z]/.test(var field)|| ! /[A-Z]/.test(var field)||!/[0-9]/.test(var field)){ return "Heslo musí obsahovat pouz a-z A-Z a 0-9.\\n";}
            
            else {return "";}
        }
        function validateheslo_znovu(var field){
            if (var field == ""){ return "Zadejte heslo znovu.\\n";}
            
            else if (var field != form.heslo_znovu.value){ return "Hesla se neshoduji.\\n";}
            else {return "";}
        }
        
        function validatereg_den(var field){
            if (var field == ""){ 
              return "Nezadali jste den narození.\\n";} 
              else {return "";}
            
            
            
        }
        function validatereg_mes(var field){
            if (var field == ""){ return "Nezadali jste měsíc narození.\\n";}
            else{ return "";}
        }
        function validatereg_rok(var field){
            if (var field == "") {return "Nezadali jste rok narození.\\n";}
            else {return "";}
        }
        
        function validatejmeno(var field){
            if(var field == "") {return "Nezadali jste Jméno.\\n";}
            else {return "";}
        }
        
        function validateprijmeni(var field){
            if(var field == "") {return "Nezadali jste Příjmení.\\n";}
            else {return"";}
        }
        function validatemesto(var field){
            if(var field == "") {return "Nezadali jste Město.\\n";}
            else {return "";}
        }
        function validateulice(var field){
            if(var field == "") {return "Nezadali jste Ulici, pokud nemáte ulici zadejte Město.\\n";}
            else { return "";}
        }
        function validatecp(var field){
            if (var field == "") {return "Nezadali jste čislo popisné.\\n";}
            else {return "";}
        }
        function validatepsc(var field){
            if (var field == "") { return "Nezadali jste PSČ.\\n";}
            else { return "";}
        }
        function validateop(var field){
            if(var field == "") { return "Pokud chcete soutěžit musíte souhlasit z podmínkami"; }
            else {return "";}
        }
    
    </script
peta
Profil
viz [#2] _es, link na zivou ukazku a pod nim link na jsfiddle.net, kam se to da nahrat, ulozit a poslat link sem,
Chamurappi
Profil
Reaguji na karlajakcipa:
Tak ty vary zase smaž, když nevíš, kam patří a kam ne.
kareljakcip
Profil
no tak nakonec jsem přišel na lepší řešení, jenže ani to mi nejde :/ přikládám kompletní kód. ↓↓↓

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset="UTF-8">
    
    <link href="styles/header-footer.css" rel="stylesheet" type="text/css" />
    <link href="styles/style-signup.css" rel="stylesheet" type="text/css" />
    <title>Registrace</title>
    
                        
                    
                    <script type="text/javascript">
        
        function checkdata(){
            if(document.form.e_mail.value.length<=0){
                alert("Zadejte e-mail.");
                document.form.e_mail.value="***e-mail";
                document.form.username.focus();
                var problem = true;
                               
            }
            esle if
                (document.form.e_mail.value(!(( document.form.e_mail.indexOf(".") > 0) &&
                            ( document.form.e_mail.indexOf("@") > 0)) || 
                            /[^a-zA-Z0-9.@_-]/.test(document.form.e_mail.value)){
                                
                            alert("Heslo ma špatny formát");
                            document.form.e_mail.focus();
                            var problem = true;
                }
            
            if(document.form.heslo.value.length=<6){
                alert("Heslo musí mít nejméně 6 znaků.");
                var problem = true;
            }
            if(document.form.heslo.value != document.form.heslo_znovu.value){
                alert("Hesla se neshodují");
                var problem = true;
            }
            if(document.form.reg_den.value<=0){
                alert("Zadejte den narození");
                document.form.reg_den.focus();
                var problem = true;
            }
            if(document.form.reg_mes.value<=0){
                alert("Zadejte měsíc narození");
                document.form.reg_mes.focus();
                var problem = true;
            }
            if(document.form.reg_rok.value<=0){
                alert("Zadejte rok narození");
                document.form.reg_rok.focus();
                var problem = true;
            }
            if(document.form.jmeno.value.length<=0){
                alert("Zadejte jméno");
                document.form.jmeno.value="***jméno";
                document.form.jmeno.focus();
                var problem = true;
            }
            if(document.form.prijmeni.value.length<=0){
                alert("Zadejte příjmení");
                document.form.prijmeni.value="***prijmeni";
                document.form.prijmeni.focus();
                var problem = true;
            }
            if(document.form.mesto.value.length<=0){
                alert("Zadejte Město");
                document.form.mesto.value="***město";
                document.form.mesto.focus();
                var problem = true;
            }
            if(document.form.ulice.value.length<=0){
                alert("Zadejte Ulici, pokud nemáte ulici, zadejte Město");
                document.form.ulice.value="***ulice";
                document.form.ulice.focus();
                var problem = true;
            }
            if(document.form.cp.value.length<=0){
                alert("Zadejte číslo popisné");
                document.form.cp.value="***čislo popisné";
                document.form.cp.focus();
                var problem = true;
            }
            if(document.form.psc.value.length<=0){
                alert("Zadejte PSČ");
                document.form.psc.value="***PSČ";
                document.form.psc.focus();
                var problem = true;
            }
            if(document.form.op.selectedIndex==0) ||(document.form.op.value==0){
                alert("Pokud chcete soutěži, musíte souhlasit z podmínkami");
                var problem = true;
            }
            if (problem==true){
                return false;
            }
            else{
                return true;
            }
            
            
            
            
            
            
            
        }
    
    </script>
    
    
    
  </head>
  
<body>
    <div class="hlavni">
    
         
         <?php
         include 'header.php';
         include 'function.php'
         
         
         ?>
         
         
         
         
        <div class="telo">
            <div class="hlavni-soutez" align="center">
             
                <div >
                    <p align="center" class="soutez"><h1><span class="nadpis">Registrace</span></h1></p>
                </div>
                
                
                    <div class="form">
                        <form id="form" name="form" action="adduser.php" method="post" onsubmit="return checkdata()">
                            <div class="radek e-mail">
                                <div class="nazev-bunky"> <span class="e-mail">E-mail:<span class="povinne">*</span> </span> </div>
                                <div class="input"><input type="text" name="e_mail" maxlength="50"  /> </div>
                               
                            </div>
                            <div class="radek heslo">
                                <div class="nazev-bunky"><span class="heslo">Heslo:<span class="povinne">*</span></span></div>
                                <div class="input"><input type="password" name="heslo"  /></div>
                                
                            </div>
                            <div class="radek heslo-znovu">
                                <div class="nazev-bunky"><span class="heslo-znovu">Potvrdit Heslo:<span class="povinne">*</span></span></div>
                                <div class="input"><input type="password" name="heslo_znovu" maxlength="40" /></div>
                                
                            </div>
                            <div class="radek datum-nar">
                                <div class="nazev-bunky"><span class="datum-nar">Datum narození:<span class="povinne">*</span></span></div>
                                <div class="input"><select id="reg-den" name="reg_den"><option value="">-</option><option value="1">01</option><option value="2">02</option><option value="3">03</option><option value="4">04</option><option value="5">05</option><option value="6">06</option><option value="7">07</option><option value="8">08</option><option value="9">09</option><option value="10">10</option><option value="11">11</option><option value="12">12</option><option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option><option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option><option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option><option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option><option value="29">29</option><option value="30">30</option><option value="31">31</option></select>
                                                        <select id="reg-mesic" name="reg_mes"><option value="">-</option><option value="1">ledna</option><option value="2">února</option><option value="3">března</option><option value="4">dubna</option><option value="5">května</option><option value="6">června</option><option value="7">července</option><option value="8">srpna</option><option value="9">záři</option><option value="10">října</option><option value="11">listopadu</option><option value="12">prosince</option></select>
                                                        <select id="reg-rok" name="reg_rok"><option value="">-</option><option value="2000">2000</option><option value="1999">1999</option> 
Moderátor Chamurappi: Zkráceno

pořád mě to házi na to adduser.php aniž by vyskočil alert
Micruss
Profil
nemělo by tam být místo onsubmit=.... spíše onclick (u type="submit") O.o? a potom v js pokud to projde tak submit data?
Chamurappi
Profil
Reaguji na karlajakcipa:
nakonec jsem přišel na lepší řešení
Tak to je paráda. Jak se projevuje, že je lepší? Mně připadá horší.

jenže ani to mi nejde :/
Nezbývá, než ti popřát hodně štěstí s laděním. Popsal jsem ti přesně, v čem spočívaly chyby, ale ty jsi zároveň s jejich opravou pokaždé vyrobil nové. Tak si to lepší řešení opravuj sám…
Paradoxně máš chybu v tom, co jsem ti poradil opravit v příspěvku #3 — a chyba je v tom, že jsi to neopravil tak, jak jsem napsal.

<option value="1939">1939</option><option value="1938">1938</option><option value="193
Jak to pokračuje dál? 1937? A co je dál? Možná 1936? Hmm… takový zásadní kousek kódu jsi sem chtěl vložit? Nejsme pastebin, délka příspěvku má limit. Dvakrát jsi byl požádán o živou ukázku.


Reaguji na Micrusse:
spíše onclick (u type="submit") O.o?
Kde tam vidíš jaký type="submit"? Jestli vidíš poprvé v životě událost onsubmit, možná bys raději neměl na otázku ohledně formuláře odpovídat. Takže odpověď na tvojí otázku je: rozhodně ne.

potom v js pokud to projde tak submit data?
Co to je submit data?
kareljakcip
Profil
Chamurappi:
Jaký je to pocit, když člověk ví řešení, ale nechá si ho pro sebe?


kareljakcip:
Tak to je paráda. Jak se projevuje, že je lepší? Mně připadá horší.
Mně připadá lepší, jelikož auto. hodí uživatelé na chybové místo tím focusem. a celkově je přehlednější.

A co se týče Vaších rad. díky za ně, ale nepomohly mi. Právě proto jsem se rozhodl, že to trochu poupravím, ale vuala a nic, a ni ten upravený mi nefunguje

Chamurappi:
Jak to pokračuje dál? 1937? A co je dál? Možná 1936? Hmm… takový zásadní kousek kódu jsi sem chtěl vložit? Nejsme pastebin, délka příspěvku má limit. Dvakrát jsi byl požádán o živou ukázku.
myslel jsem si že to podstatné bylo ukázano. snad je můžu doplnit konec
<input type="submit" name="submit" value="Zaregistrovat" />
                            
                            </div>
                            
                            
                        
                        
                        </form>
a musí říct, že opravdu nevím, kde může být chyba, možná je to maličkost, ale ja ji tam nevidím, potřebuji jenom poradit tu maličkost.

SPASIBA.
Chamurappi
Profil
Reaguji na karlajakcipa:
Jaký je to pocit, když člověk ví řešení, ale nechá si ho pro sebe?
Já si ho nenechal pro sebe. Napsal jsem ti, že bys měl přidat za menšítko rovnítko.

Pravděpodobně jediná chyba v původním kódu, která způsobovala stoprocentní nefunkčnost, byla chybějící závorka. Kdybys opravil jen ji, začalo by to nejspíš nějak fungovat. V druhém kódu jsi ovšem doplnil var na místa, kam nepatří. Kdybys odstranil jen ty vary, opět by to asi fungovalo. Ve třetím kódu máš syntaktickou chybu v (document.form.heslo.value.length=<6). Když opravíš jen ji a nebudeš vytvářet žádné nové chyby, mělo by to fungovat. Pokud to ani po opravě této vady fungovat nebude, je chyba v něčem, co jsem přehlédl, nebo co je mimo uvedený kód a pokud nedáš odkaz na živou ukázku, hledat dál už nebudu.

jelikož auto. hodí uživatelé na chybové místo tím focusem
To je určitě zlepšení, ale to, že při více chybách každá hláška vyskočí ve svém vlastním alertu, mi lepší nepřipadá.
kareljakcip
Profil
zdravim no tak stale mi to nefici přikládám tedy tu živou ukázku, a budu moc rád když mi někdo helfne

http://beskydyinfo.wz.cz/
_es
Profil
kareljakcip:
Zamysli sa nad premennou, definovanou vo vnútri funkcie a nad premennou, definovanou mimo funkcie.
kareljakcip
Profil
_es:
Zamysli sa nad premennou, definovanou vo vnútri funkcie a nad premennou, definovanou mimo funkcie.
no zamyslel jsem se a přidal jsem tam jeden var.
Ale pořád nic.

Nemůže být chyba ve formuláři někdě, jelikož jsem vytvořil fiktivní funkci cc(){ return false;} a ani s tím mi to nefunguje.
_es
Profil
kareljakcip:
Premenná, definovaná vo vnútri funkcie, existuje len vo vnútri funkcie a po skončení funkcie zaniká.
Chamurappi
Profil
Reaguji na kareljakcipa:
Příkaz else se píše else, ne esle.

jelikož jsem vytvořil fiktivní funkci cc(){ return false;}
Jaký by měla mít účel? Co je na ní fiktivního?
V kódu odkázané stránky vidím:
function cc{
    return false;
}
… za cc chybí závorky, to je další nová syntaktická chyba. Budeš-li při opravách neustále přidávat nové syntaktické chyby, kód nebude funkční nikdy. JavaScript není HTML, blok se syntaktickou chybou se vůbec nespouští, celý se ignoruje.

Až opravíš obě syntaktické chyby, je tam ještě několik logických chyb, které jsi vytvořil při přechodu na ten „lepší“ kód:
1) document.form.username.focus();
Žádný <input> s name="username" ve formuláři není.
2) document.form.e_mail.indexOf(".") > 0 a document.form.e_mail.indexOf("@") > 0
Objekt document.form.e_mail reprezentuje <input>, nemá metodu indexOf. Až teprve document.form.e_mail.value ji má.
3) (document.form.e_mail.value(!(( document.form.e_mail […])))
Co to je? Přeci document.form.e_mail.value není funkce, tak co za ní dělají závorky?
4) Pokud je problem==true, vrací checkdata hodnotu false, a v opačném případě vrací také hodnotu false.
kareljakcip
Profil
No tak už jsem to poupravoval a konečně to fičí

Chtěl bych poděkovat Chamurappimu a _esu, za super rady, který mě nasměrovaly ke zdárnému řešení.

Když se na to tak zpětně dívám, je mi až trapně, že jsem to sem hodil z tolika chybami, ale opravdu jsem si myslel, že tam je jenom maličkost.
Doufám že Vám v budoucnu taky budu moci helfnout :D.

Diky

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: