Problém s odesláním formuláře který validuje něco co tam není – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Problém s odesláním formuláře který validuje něco co tam není – JavaScript, AJAX, jQuery – Fórum – Programujte.comProblém s odesláním formuláře který validuje něco co tam není – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno

Toto vlákno bylo označeno za vyřešené.
Spuštěný nový filmový web Filmožrouti.cz — vše o Avengers, Pacific Rim, Thor, Star Wars…
jAkErCZ0
Stálý člen
9. 7. 2018   #1
-
0
-

Zdravím,

mám takový problém mám formulář kde validuji pomocí javascriptu a měl jsem problém že když jsem chtěl přidat nový řádek tak mi to chtělo validovat celý form to jsem pomocí upravil že již když chci přidat nový řádek nevaliduje to a přidá ho....

ale problém nastává jakmile chci odeslat celý form... tak se mi ta stránka vyroluje nahoru a nic se nestane... jako kdybych někde něco nevyplnil ale vše je vyplněné...

 

    $(".validate-form").submit(function(e) {
        var noValidate = $(this).find('[clicked="true"][formnovalidate]').length !== 0;
        if (noValidate) {
            return true;
        }

        e.preventDefault();
        var check = true;

        for(var i=0; i<input.length; i++) {
            if(validate(input[i]) == false){
                showValidate(input[i]);
                check=false;
            }
        }
        if (check) {
            $(this).unbind('submit').submit();
        }

        return check;
    });

Tento kód je na přidání nového řádku který nechci validovat a přijde mi že někde je chyba jelikož to prostě nepustí dál...

Toto je stárá funkce na validaci u které jsem bez vyplnění všeho nemohl přidat řádek.

nebude validovat a jakmile budu chtít odeslat form poté to bude validovat..

Došel jsem do fáze kdy do inputu který má přidat nový řádek se přidá atribut clicked=„true“

$(".validate-form").submit(function(){
           var check = true;

          for(var i=0; i<input.length; i++) {
              if(validate(input[i]) == false){
                  showValidate(input[i]);
                  check=false;
              }
          }

          return check;
      });

Já osobně se v js moc nevyznám a proto sem se obrátil na Vás :)

Díky moc

Nahlásit jako SPAM
IP: 109.183.230.–
peter
~ Anonymní uživatel
3404 příspěvků
10. 7. 2018   #2
-
0
-

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 :)

Nahlásit jako SPAM
IP: 90.176.141.–
MilanL+1
Věrný člen
11. 7. 2018   #3
-
0
-

#2 peter
ahoj, pokud si vzpomínám, jeho problém byl v tom, že má 2 tlačítka "Přidej položku" a "Odešli formulář", a neumí u nich rozlišit Submit. 

Přidání položky má být bez validace - na to je tam ten JQuery zápis jak si lámeš hlavu má u tlačítka nastevený ten atribut "clicked"

Odeslání formuláře má být s validací.

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
3404 příspěvků
13. 7. 2018   #4
-
0
-

Aha. Kdyz on nevyrobi jednoduchy nefunkcni kod a udela copy paste neco uprostred, co treba ani s tim nesouvisi. Nicmene, v tom kodu ma ty chyby, co jsem napsal. Return false nebo event.preventDefault mu zastavi submitovani. Cili, v tomhle pripade se mu vymstilo copy-paste z jineho kodu, kdyz se nesnazil pochopit, jak tech 5 radku vlastne funguje. Ale zas chapu, ze neni jednoduche zrovna submitovani pochopit, jak se propojuje s js. A ani nejsem dobrej ve vysvetlovani, tak snad neco malo z toho pochopi :)

Nahlásit jako SPAM
IP: 90.176.141.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 15 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032018 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý