Autor | Zpráva | ||
---|---|---|---|
lucikmucik Profil |
Takže řeším jeden problém, kterej nejsem schopen vyřešit... Mám jeden formulář (kontaktní), který funguje, zde je jeho kód:
<div id="successSend" class="alert alert-success invisible"> <strong>Zpráva odeslána</strong></div> <div id="errorSend" class="alert alert-error invisible">Chyba.</div> <form id="contact-form-mail" action="php/mail.php"> <div class="control-group"> <div class="controls"> <input class="span12" type="text" id="name" name="name" placeholder="* Jméno nebo přezdívka" /> <div class="error left-align" id="err-name">Prosím, napiš jméno.</div> </div> </div> <div class="control-group"> <div class="controls"> <input class="span12" type="email" name="email" id="email" placeholder="* Email" /> <div class="error left-align" id="err-email">Napiš správnou adresu.</div> </div> </div> <div class="control-group"> <div class="controls"> <textarea class="span13" name="comment" id="comment" placeholder="* Zpráva"></textarea> <div class="error left-align" id="err-comment">Prosím napiš zprávu.</div> </div> </div> <div class="control-group"> <div class="controls"> <button id="send-mail" class="message-btn">Odeslat</button> </div> </div> </form> <?php include 'functions.php'; if (!empty($_POST)){ $data['success'] = true; $_POST = multiDimensionalArrayMap('cleanEvilTags', $_POST); $_POST = multiDimensionalArrayMap('cleanData', $_POST); $emailTo ="XXXX"; $emailFrom ="XXXX"; $emailSubject = "XXX Kontaktní formulář"; $name = $_POST["name"]; $email = $_POST["email"]; $comment = $_POST["comment"]; if($name == "") $data['success'] = false; if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) $data['success'] = false; if($comment == "") $data['success'] = false; if($data['success'] == true){ $message = "Jméno: $name<br> Email: $email<br> Text: $comment"; $headers = "XXXX Formulář" . "\r\n"; $headers .= "Content-type:text/html; charset=ISO-8859-2" . "\r\n"; $headers .= "Od: <$emailFrom>" . "\r\n"; mail($emailTo, $emailSubject, $message, $headers); $data['success'] = true; echo json_encode($data); } } Pak mám druhý, který vypadá vlastně úplně stejně, jen je tam přidaný $item: <div id="successSend" class="alert alert-success invisible"> <strong>Zpráva odeslána</strong></div> <div id="errorSend" class="alert alert-error invisible">Chyba.</div> <form id="contact-form-feed" action="php/feedback.php"> <div class="control-group"> <div class="controls"> <input class="span12" type="text" id="name" name="name" placeholder="* Jméno" /> <div class="error left-align" id="err-name">Prosím, napiš jméno.</div> </div> </div> <div class="control-group"> <div class="controls"> <input class="span12" type="email" name="email" id="email" placeholder="* Email" /> <div class="error left-align" id="err-email">Napiš správnou adresu.</div> </div> </div> <div class="control-group"> <div class="controls"> <input class="span12" type="text" id="item" name="item" placeholder="* Věc" /> <div class="error left-align" id="err-item">Prosím, napiš předmět obchodu.</div> </div> </div> <div class="control-group"> <div class="controls"> <textarea class="span13" name="comment" id="comment" placeholder="* Zpráva"></textarea> <div class="error left-align" id="err-comment">Prosím napiš zprávu.</div> </div> </div> <div class="control-group"> <div class="controls"> <button id="send-feedback" class="message-btn">Odeslat</button> </div> </div> </form> <?php include 'functions.php'; if (!empty($_POST)){ $data['success'] = true; $_POST = multiDimensionalArrayMap('cleanEvilTags', $_POST); $_POST = multiDimensionalArrayMap('cleanData', $_POST); $emailTo ="XXXX"; $emailFrom ="XXXX "; $emailSubject = "XXXX Feedback formulář"; $name = $_POST["name"]; $email = $_POST["email"]; $item = $_POST["item"]; $comment = $_POST["comment"]; if($name == "") $data['success'] = false; if (!preg_match("/^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$/i", $email)) $data['success'] = false; if($item == "") $data['success'] = false; if($comment == "") $data['success'] = false; if($data['success'] == true){ $message = "Jméno: $name<br> Email: $email<br> Věc: $item<br> Text: $comment"; $headers = "XXXX Formulář" . "\r\n"; $headers .= "Content-type:text/html; charset=ISO-8859-2" . "\r\n"; $headers .= "Od: <$emailFrom>" . "\r\n"; mail($emailTo, $emailSubject, $message, $headers); $data['success'] = true; echo json_encode($data); } } JS-stejné pro Feedback, akorát s item navíc $("#send-mail").click(function () { var name = $('input#name').val(); var error = false; if (name == "" || name == " ") { $('#err-name').show(500); $('#err-name').delay(4000); $('#err-name').animate({ height: 'toggle' }, 500, function () { }); error = true; } var emailCompare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; var email = $('input#email').val().toLowerCase(); if (email == "" || email == " " || !emailCompare.test(email)) { $('#err-email').show(500); $('#err-email').delay(4000); $('#err-email').animate({ height: 'toggle' }, 500, function () { }); error = true; } var comment = $('textarea#comment').val(); if (comment == "" || comment == " ") { $('#err-comment').show(500); $('#err-comment').delay(4000); $('#err-comment').animate({ height: 'toggle' }, 500, function () { }); error = true; } if (error == false) { var dataString = $('#contact-form-mail').serialize(); $.ajax({ type: "POST", url: $('#contact-form-mail').attr('action'), data: dataString, timeout: 6000, error: function (request, error) { }, success: function (response) { response = $.parseJSON(response); if (response.success) { $('#successSend').show(); $("#name").val(''); $("#email").val(''); $("#comment").val(''); } else { $('#errorSend').show(); } } }); return false; } return false; }); Problém je ten, že první funguje bez problémů, ale druhý vůbec nereaguje, jen při prázdných polích vypíše chyby u Jména, Emailu a Zprávy... U Věci nic. |
||
Davex Profil |
#2 · Zasláno: 28. 8. 2015, 20:45:07
Domnívám se, že chyba by mohla být v tom JavaScriptu, který si sem nevložil, a který obsluhuje ten druhý nefunkční formulář. Pokud je totiž stejný jako ten tady, tak rozhodně nemůže fungovat správně, když má formulář jiné
id .
|
||
lucikmucik Profil |
Tady je
$("#send-feedback").click(function () { var name = $('input#name').val(); var error = false; if (name == "" || name == " ") { $('#err-name').show(500); $('#err-name').delay(4000); $('#err-name').animate({ height: 'toggle' }, 500, function () { }); error = true; } var item = $('input#item').val(); var error = false; if (item == "" || item == " ") { $('#err-item').show(500); $('#err-item').delay(4000); $('#err-item').animate({ height: 'toggle' }, 500, function () { }); error = true; } var emailCompare = /^([a-z0-9_.-]+)@([da-z.-]+).([a-z.]{2,6})$/; var email = $('input#email').val().toLowerCase(); if (email == "" || email == " " || !emailCompare.test(email)) { $('#err-email').show(500); $('#err-email').delay(4000); $('#err-email').animate({ height: 'toggle' }, 500, function () { }); error = true; } var comment = $('textarea#comment').val(); if (comment == "" || comment == " ") { $('#err-comment').show(500); $('#err-comment').delay(4000); $('#err-comment').animate({ height: 'toggle' }, 500, function () { }); error = true; } if (error == false) { var dataString = $('#contact-form-feed').serialize(); $.ajax({ type: "POST", url: $('#contact-form-feed').attr('action'), data: dataString, timeout: 6000, error: function (request, error) { }, success: function (response) { response = $.parseJSON(response); if (response.success) { $('#successSend').show(); $("#name").val(''); $("#item").val(''); $("#email").val(''); $("#comment").val(''); } else { $('#errorSend').show(); } } }); return false; } return false; }); |
||
Davex Profil |
#4 · Zasláno: 29. 8. 2015, 11:41:43
To mi bez problémů funguje. Ukaž stránku, kde to nefunguje.
|
||
lucikmucik Profil |
#5 · Zasláno: 29. 8. 2015, 12:11:13
http://lmrig.tode.cz/#contact
Momentálně mi nejde ani ten první formulář O.o |
||
Davex Profil |
#6 · Zasláno: 29. 8. 2015, 14:51:19
Hlavní problém bude v tom, že máš oba formuláře na jedné stránce a identifikátory
<input> ů pak nejsou unikátní, takže skript čte údaje odjinud.
Jinak s tou stránkou je v nepořádku ještě něco dalšího, protože se načítá šíleně dlouho (obrázky mají necelých 18 MB) a několikrát mi zamrznul prohlížeč s vytížením CPU na 100 %. |
||
lucikmucik Profil |
Takže mám změnit v JS a PHP u feedback formuláře name, email, comment třeba na name-f, email-f, comment-f, potom i v kódu samotného formuláře, jestli to chápu správně?
Akorát mi nejde do hlavy, proč mi z ničeho nic nejede ani ten kontaktní formulář. Obrázky zmenším, jsou v png a vysokém rozlišení myslím. |
||
Davex Profil |
#8 · Zasláno: 29. 8. 2015, 21:29:56
lucikmucik:
„Takže mám změnit v JS a PHP u feedback formuláře name, email, comment třeba na name-f, email-f, comment-f, potom i v kódu samotného formuláře, jestli to chápu správně?“ Formuláře se liší jen v jedné položce, takže já osobně bych sloučil ty dva formuláře do jednoho. „Akorát mi nejde do hlavy, proč mi z ničeho nic nejede ani ten kontaktní formulář.“ Protože nejsou identifikátory v atributech id unikátní a událost „click“ je navázaná na jiné tlačítko na stránce.
|
||
Časová prodleva: 9 let
|
0