Autor | Zpráva | ||
---|---|---|---|
gully Profil |
Zdravím všechny a chtěl byb poprosit o pomoc. Z nějakýho důvodu, na který se mi nedaří přijít, mi nefunguje tlačítko pro odeslání emailové adresy. Formulář je na této stránce.
Kód pro formulář: <div class="container padding-top text-center"> <div class="row"> <p class="bold">Odebírat týdenní menu e-mailem:</p> </div> <div class="row"> <form class="form-inline" action="registrace-tydenni-menu.php" method="post" id="odber-tydeni-menu"> <input type="email" class="form-control" id="tydenni-menu-email" size="20" placeholder="Vložte e-mail"> <button type="submit" class="btn btn-primary">Odeslat</button> <div style="padding-top: 4px"> <p class="small text-center"> Po odeslání prosím přejděte do uvedené e-mailové schránky a potvrďte odběr kliknutím na odkaz, který jsme vám poslali. </p> </div> </form> </div> </div> <script> $("#odber-tydeni-menu").submit(function(event){ event.preventDefault(); var post_url = $(this).attr("action"); var request_method = $(this).attr("method"); var form_data = $(this).serialize(); $.ajax({ url : post_url, type: request_method, data : form_data }).done(function(response){ $("#server-results").html(response); }); }); </script> Předem díky za pomoc. |
||
Serg Profil * |
#2 · Zasláno: 19. 4. 2020, 18:03:48
To bude asi tím, že ten input nemá atribut name.
|
||
gully Profil |
#3 · Zasláno: 19. 4. 2020, 20:30:13
Serg:
V tom chyba není. Atribut name není potřeba zadávat. Když ten kód zkopíruješ do samostatného souboru html, tak to funguje. |
||
Kajman Profil |
Máte tam na tom formuláři dvě události. K této druhé se nedostane. Sežere to první validační.
|
||
gully Profil |
Kajman:
Můžete mě popostrčit? Já tam žádnou validační událost nevidím. <div class="container padding-top text-center"> <div class="row"> <p class="bold">Odebírat týdenní menu e-mailem:</p> </div> <form class="form-inline" action="registrace-tydenni-menu.php" method="post" id="odber-tydeni-menu"> <div class="row"> <div class="form-group"> <input type="email" class="form-control" id="tydenni-menu-email" size="20" placeholder="Vložte e-mail" required="required"> <button type="submit" class="btn btn-primary">Odeslat</button> <div style="padding-top: 4px"> <p class="small text-center"> Po odeslání prosím přejděte do uvedené e-mailové schránky a potvrďte odběr kliknutím na odkaz, který jsme vám poslali. </p> </div> </div> </div> </form> </div> |
||
Kajman Profil |
#6 · Zasláno: 19. 4. 2020, 22:00:33
Když si dám v prohlížeči F12, tak u toho formuláře je označení event. Nyní je kód z [#1] zapoznámkovaný, tak tam zůstal jen jeden.
img.djpw.cz/zep.png |
||
lionel messi Profil |
gully:
„Já tam žádnou validační událost nevidím.“ V súbore jqBootstrapValidation.js (premenná uniqueForms sa deklaruje o niekoľko riadkov vyššie):
$(uniqueForms).bind("submit", function (e) { var $form = $(this); var warningsFound = 0; var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); $inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); |
||
gully Profil |
Kajman:
V developerské liště v Chromu se mi ten event nezobrazuje, dá se to to nějak zapnout? lionel messi: Ano, je to tak. Ale nedaří se mi to vypnout/poslat dál. Zkoušel jsem to neúspěšně vyčíst z kontaktního formuláře naspodu stránek, který byl součástí html šablony. Můžete mi poradit? |
||
lionel messi Profil |
gully:
„přidal formu atribut novalidate,“ Ak chápem správanie tohto atribútu správne, vypne len predvolenú HTML validáciu v prehliadači, nie Javascriptovú, ktorú potrebuješ ovplyvniť. Skús niekde do kódu (pre istotu čím nižšie, tým lepšie) pridať čosi takéto: $(document).ready(function () { $("#contactForm").off("submit"); }) To by malo zabezpečiť odstránenie udalosti na konkrétnom formulári. Pozn.: Netestované |
||
Serg Profil * |
#10 · Zasláno: 19. 4. 2020, 23:36:56
On je tam teď vidět jen ten jeden event, protože je ten <script> pod formulářem zakomentovaný. Jinak by si s tím teoreticky mělo jQuery poradit a ty eventy probublat. Ten bootsrapValidation to zastaví, jen když to neprojde validací, což je podle mě v pořádku.
gully: „V tom chyba není. Atribut name není potřeba zadávat. Když ten kód zkopíruješ do samostatného souboru html, tak to funguje.“ Jako, dost to pak pomáhá se k těm datům pak dostat. Zkusil jsem, co to pošle na server, když tam nezadám name. V $_POST ani $_REQUEST nebylo vůbec nic, nečekaně :D Navíc to chceš posílat AJAXem a očividně použít funkci .serialize(), a ta jak se zdá, nezahrne inputy, které nemají name. Můžeš si zkusit do toho pole něco zadat, a pak v konzoli zavolat $("#odber-tydeni-menu").serialize() , a potom tomu poli dát nějaké jméno, a zase zavolat tu funkci.
Možná se to tak chová jen na Mozzile, nevím. Ale .serialize() by se takle mělo chovat ve všech prohlížečích. Ale nejdřív by to chtělo vůbec vyřešit, aby se to dostalo k tomu správnému eventu, třeba pomůže ten <script> odkomentovat. |
||
Kajman Profil |
Asi bych upravil soubor
/js/contact_me.js tak, aby nezpracovával všechny inputy na stránce, ale jen z kontaktního formuláře.
Tedy $("input,textarea")... $("#contactForm").find("input,textarea")... Edit: chrome to má trošku jinak img.djpw.cz/bfp.png |
||
gully Profil |
#12 · Zasláno: 20. 4. 2020, 11:27:02
Už to šlape. Všem mockrát děkuju za pomoc.
|
||
Časová prodleva: 4 roky
|
0