Na nevyznam se odpovidat, tak se ho nauc :) A vzhledem k tomu, ze tve dotazy tu vidam neco pres rok... Opet zadarmo a opet zadna vlastni snaha. Nekdo by to mohl oznacit za zlodejinu :)
$(".validate-form").submit --- tohle nejspis nahrazuje zapis <form onsubmit="return mojefunkce();" action="posli.php">
Pokud je return uvnitr v 'mojefunkce' true, tak se formular odesila do action.
Pokud false, formular se neodesila.
Puvodni kod tedy funguje tak, ze
1. check = true
2. cyklus, projdi vsechna policka a kdyz je neco spatne, nastav check = false (jakasi validace)
3. return check
var noValidate = $(this).find('[clicked="true"][formnovalidate]').length !== 0;
if (noValidate) { return true; }
Tady si nejsem jisty, co to presne udela ten jquery zapis. Prijde mi, ze je to nejaky nesmysl. Tezko hadat bez html kodu, co jsi chtel docilit. Takze, dalsi krok je google.
google = jquery find examples // nebo mozna
google = jquery find examples by name checkbox
https://stackoverflow.com/questions/4870494/jquery-find-child-checkbox
Cili, bych tam ocekaval spis neco takoveho
$tc = $(this).parent().find('input:checkbox:first'), // nebo ('input[name="nevalidovat"'),
if ($tc.attr('checked')) {...}
https://api.jquery.com/…ox-selector/
event.preventDefault(); // to je asi neco, co tam strasne moc nechces, zkopiruji ti celou cast z dokumentace...
// Prevent the form from submitting
$( "form" ).submit(function( event ) {
event.preventDefault();
});
Prelozeno do cestiny: Zabran odeslani formulare za kazdou cenu. Ok, tak jen bez poslednich slov s cenou :)
1. Jde o to, ze kdyz kliknes na <input type=submit>, tak udalost click se ulozi do objektu event. Bylo kliknuto, bylo kliknuto na element button.
2. Nekde na pozadi bezi program sledovac udalosti elementu. Zjisti, ze bylo kliknuto na element, ktery ma zpusobit odeslani formulare. Spusti funkci form onsubmit a ceka na jeji vysledek.
3. Pokud tam mas navazavou vlastni funkci, to muzes. Ale, onsubmit je samostatna funkce, pseudokod by vypadal nejak takto:
onsubmit=funkce(event){ mojefunkce(event){ return neco; }}
Default je kazda funkce nastaveny return na true, cili
onsubmit=funkce(event){ mojefunkce(event){ return neco; } return true;}
4. Cili, vykona se tva funkce mojefunkce a onsubmit vrati defaultne true. A pokud ano, tak se pokracuje dal v odesilani formulare pomoci adresy action, neco jako odesli(url=action, data=inputy).
Takze, pokud nechces formular odeslat, tak vratis returnem false.
onsubmit=funkce(event){ mojefunkce(event){ return neco; } return false;}
Pokud je tva funkce validacni a ma rozhodovat o odeslani nebo ne, tak by pseudokod vypadal takto
onsubmit=funkce(event){ return mojefunkce(event){ return neco; } }
A nebo muzes pouzit zastaveni sledovace udalosti event.preventDefault();
onsubmit=funkce(event){ mojefunkce(event){ if (!neco) event.preventDefault(); } }
Tak, jak to mas ted napsane, se to chova podle mne takto (za predpokladu, ze spravne funguje to novalidate = checkbox...)
- pokud je zaskrtnuty, ukonci se funkce 'return true;' a formular se odesle
- pokud neni zaskrtnuty, ukonci odesilani e.preventDefault();
- a dalsi casti uz nemaji na samotne odesilani (submit) vliv :)