Помогите плз с формой
Здравствуйте.
Пытаюсь добавить в эту форму https://graygrids.com/php-and-ajax-b...rap-and-html5/ checkbox, radio, select. обычные инпуты и пароль добавил а с чекбоксами не получается(( В js не разбираюсь, нужна помощь. Возможно все решается просто ? метод тыка отнял пол дня - толку 0. Вот html <!--checkbox--> <div class="form-group"> <div class="controls"> <input type="checkbox" name="check1" id="checkbox1" value="option1" checked>1 <input type="checkbox" name="check2" id="checkbox2" value="option2">2 <input type="checkbox" name="check3" id="checkbox3" value="option3">3 <div class="help-block with-errors"></div> </div> </div> часть скрипта формы отвечающая за вывод данных в обработчик php function submitForm(){ // Initiate Variables With Form Content var name = $("#name").val(); var email = $("#email").val(); var phone = $("#phone").val(); var password = $("#password").val(); var msg_subject = $("#msg_subject").val(); var message = $("#message").val(); $.ajax({ type: "POST", url: "assets/php/form-process.php", data: "name=" + name + "&email=" + email + "&password=" + password + "&phone=" + phone + "&msg_subject=" + msg_subject + "&message=" + message, success : function(text){ if (text == "success"){ formSuccess(); } else { formError(); submitMSG(false,text); } } }); } часть php для отправки формы <?php $errorMSG = ""; // NAME if (empty($_POST["name"])) { $errorMSG = "Заполните поле"; } else { $name = $_POST["name"]; } if (empty($_POST["email"])) { $errorMSG .= "Заполните поле "; } else { $email = $_POST["email"]; } // PHONE if (empty($_POST["phone"])) { $errorMSG .= "Заполните поле "; } else { $phone = $_POST["phone"]; } // SUBJECT if (empty($_POST["msg_subject"])) { $errorMSG .= "Заполните поле "; } else { $msg_subject = $_POST["msg_subject"]; } // PASSWORD if (empty($_POST["password"])) { $errorMSG .= "Заполните поле "; } else { $password = $_POST["password"]; } // MESSAGE if (empty($_POST["message"])) { $errorMSG .= "Заполните поле "; } else { $message = $_POST["message"]; } $EmailTo = "hello@yoursite.com"; $Subject = "Сообщение с сайта"; // prepare email body text $Body = ""; $Body .= "Имя: "; $Body .= $name; $Body .= "\n"; $Body .= "Email: "; $Body .= $email; $Body .= "\n"; $Body .= "Телефон: "; $Body .= $phone; $Body .= "\n"; $Body .= "Пароль: "; $Body .= $password; $Body .= "\n"; $Body .= "Тема: "; $Body .= $msg_subject; $Body .= "\n"; $Body .= "Сообщение: "; $Body .= $message; $Body .= "\n"; .....если не сложно - подскажите как реализовать, с учетом моей безграмотности в js |
Попробуйте так.
Получить чекнутые чекбоксы var arr_check=$('input:checkbox:checked').map(function () {return this.value;}).get(); В ajax передаете в data массив arr_check data: "name=" + name + "&email=" + email + "&password=" + password + "&phone=" + phone + "&msg_subject=" + msg_subject + "&message=" + message+ "&arr_check="+ arr_check, А в PHP уже работайте с массивом $checkbox = $_POST["arr_check"]; |
В строке 9 исходного кода
submitForm(this); Строка 14 function submitForm(f){ Строки 16-19 удалить, а строка 25 должна быть такой data: $(f).serialize(), Только на сервере if (empty($_POST["name"])) и прочее, совсем не означает, что поле не заполнено, достаточно одного пробела и будет считаться заполненным. |
to Griffter
js---------------------------- function submitForm(){ // Initiate Variables With Form Content var name = $("#name").val(); var email = $("#email").val(); var phone = $("#phone").val(); var password = $("#password").val(); var arr_check=$('input:checkbox:checked').map(function () {return this.value;}).get(); var msg_subject = $("#msg_subject").val(); var message = $("#message").val(); $.ajax({ type: "POST", url: "assets/php/form-process.php", data: "name=" + name + "&email=" + email + "&password=" + password + "&phone=" + phone + "&msg_subject=" + msg_subject + "&message=" + message + "&arr_check="+ arr_check, php----------------------------- ........ // PASSWORD if (empty($_POST["password"])) { $errorMSG .= "Заполните поле "; } else { $password = $_POST["password"]; } // CHECKBOX if (empty($_POST["arr_check"])) { $errorMSG .= "Сделайте выбор"; } else { $checkbox = $_POST["arr_check"]; } // MESSAGE if (empty($_POST["message"])) { $errorMSG .= "Заполните поле "; } else { $message = $_POST["message"]; }........... приходит сообщение------------- Имя: ыаываываыва Email: n@yandex.ru Телефон: (111)111-11-11 Пароль: 123456 Тема: dsfsd sdfsdf Выбор1: Сообщение: вап вап вапв вапв вапвап форма работает но значение чекбокса не передается Возможно я не правильно вставил ваш код? Спасибо за попытку помочь. |
Цитата:
|
Цитата:
} }); function submitForm(){ // Initiate Variables With Form Content $.ajax({ type: "POST", url: "assets/php/form-process.php", data: $(f).serialize(), success : function(text){ if (text == "success"){ formSuccess(); } else { formError(); submitMSG(false,text); } } }); } php---------------------- // PASSWORD if (empty($_POST["password"])) { $errorMSG .= "Заполните поле "; } else { $password = $_POST["password"]; } // CHECKBOX if (empty($_POST["checkbox"])) { $errorMSG .= "Сделайте выбор"; } else { $checkbox = $_POST["checkbox"]; } // MESSAGE if (empty($_POST["message"])) { $errorMSG .= "Заполните поле "; } else { $message = $_POST["message"]; } |
Цитата:
|
Цитата:
|
Цитата:
Само же почтовое отправление так не оформляют и это тоже ошибка. Диалог с клиентом вообще не понять какой - каждая проверка поля в случае его не заполнения (что у вас проверяется опять таки неверно) возвращает "Заполните поле ", а поле какое? Исходный код, что вы взяли, написан под HTML5, форма при наличии у ее полей атрибута required не будет отправляться, если такое поле не заполнено. В коде есть валидатор с определенным текстом сообщений в data-error. Если у клиента браузер без поддержки HTML5 или отключен JS, то в этом случае сервер должен отдавать такие сообщения, но толку от них, если они не конкретизируют где именно ошибка? А ведь на сервере можно определить ошибки и так: $err = [ "name"=>"имени", //.... и т.д. ]; которому будет предшествовать текст "Заполните поле ". Если отправлять данные таким образом data: "name=" + name + "&email=" + email + "&password ... то при каждом новом "добавить еще поля" нужно будет править код. А метод JQ .serialize() как раз и вернет поля формы и их значения как GET параметры - "name=" + name + "&email=" + email + "&password ... А то что у вас не работает, так это не из-за применения этого метода и от того, что в функцию передается ссылка на форму. |
konsty, хочешь попросить помощи - прояви увОжение к читателю, соблюдай политес бб-кодами.
|
Часовой пояс GMT +3, время: 20:23. |