Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.10.2016, 16:37
Новичок на форуме
Отправить личное сообщение для konsty Посмотреть профиль Найти все сообщения от konsty
 
Регистрация: 10.10.2016
Сообщений: 5

Помогите плз с формой
Здравствуйте.
Пытаюсь добавить в эту форму 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"];
}

// EMAIL
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
Ответить с цитированием
  #2 (permalink)  
Старый 10.10.2016, 17:39
Новичок на форуме
Отправить личное сообщение для Griffter Посмотреть профиль Найти все сообщения от Griffter
 
Регистрация: 26.08.2016
Сообщений: 9

Попробуйте так.
Получить чекнутые чекбоксы
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"];
Ответить с цитированием
  #3 (permalink)  
Старый 10.10.2016, 17:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

В строке 9 исходного кода

submitForm(this);

Строка 14

function submitForm(f){

Строки 16-19 удалить, а строка 25 должна быть такой

data: $(f).serialize(),

Только на сервере if (empty($_POST["name"])) и прочее, совсем не означает, что поле не заполнено, достаточно одного пробела и будет считаться заполненным.

Последний раз редактировалось laimas, 10.10.2016 в 17:53.
Ответить с цитированием
  #4 (permalink)  
Старый 10.10.2016, 18:56
Новичок на форуме
Отправить личное сообщение для konsty Посмотреть профиль Найти все сообщения от konsty
 
Регистрация: 10.10.2016
Сообщений: 5

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:
Сообщение: вап вап вапв вапв вапвап

форма работает но значение чекбокса не передается
Возможно я не правильно вставил ваш код?
Спасибо за попытку помочь.
Ответить с цитированием
  #5 (permalink)  
Старый 10.10.2016, 19:05
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

Сообщение от konsty
но значение чекбокса не передается
Неформатированный говнокод не смотрел, а насчет чекбоксов просто. Передается только отчекрыженный.
Ответить с цитированием
  #6 (permalink)  
Старый 10.10.2016, 19:06
Новичок на форуме
Отправить личное сообщение для konsty Посмотреть профиль Найти все сообщения от konsty
 
Регистрация: 10.10.2016
Сообщений: 5

Сообщение от laimas Посмотреть сообщение
В строке 9 исходного кода

submitForm(this);

Строка 14

function submitForm(f){

Строки 16-19 удалить, а строка 25 должна быть такой

data: $(f).serialize(),

Только на сервере if (empty($_POST["name"])) и прочее, совсем не означает, что поле не заполнено, достаточно одного пробела и будет считаться заполненным.
submitForm(this);
}
});


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"];
}
Ответить с цитированием
  #7 (permalink)  
Старый 10.10.2016, 19:09
Новичок на форуме
Отправить личное сообщение для konsty Посмотреть профиль Найти все сообщения от konsty
 
Регистрация: 10.10.2016
Сообщений: 5

Сообщение от laimas Посмотреть сообщение
В строке 9 исходного кода

submitForm(this);

Строка 14

function submitForm(f){

Строки 16-19 удалить, а строка 25 должна быть такой

data: $(f).serialize(),

Только на сервере if (empty($_POST["name"])) и прочее, совсем не означает, что поле не заполнено, достаточно одного пробела и будет считаться заполненным.
Наверно где-то у меня ошибка - сообщение вообще не приходит
Ответить с цитированием
  #8 (permalink)  
Старый 10.10.2016, 19:10
Новичок на форуме
Отправить личное сообщение для konsty Посмотреть профиль Найти все сообщения от konsty
 
Регистрация: 10.10.2016
Сообщений: 5

Сообщение от warren buffet Посмотреть сообщение
Неформатированный говнокод не смотрел, а насчет чекбоксов просто. Передается только отчекрыженный.
Информативно))
Ответить с цитированием
  #9 (permalink)  
Старый 10.10.2016, 19:33
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от konsty
Наверно где-то у меня ошибка - сообщение вообще не приходит
У вас вообще в коде масса ошибок и самая главная, это логика серверного кода - не зависимо от проверок будет отправляться почта (если код именно такой).

Само же почтовое отправление так не оформляют и это тоже ошибка.

Диалог с клиентом вообще не понять какой - каждая проверка поля в случае его не заполнения (что у вас проверяется опять таки неверно) возвращает "Заполните поле ", а поле какое?

Исходный код, что вы взяли, написан под HTML5, форма при наличии у ее полей атрибута required не будет отправляться, если такое поле не заполнено. В коде есть валидатор с определенным текстом сообщений в data-error.

Если у клиента браузер без поддержки HTML5 или отключен JS, то в этом случае сервер должен отдавать такие сообщения, но толку от них, если они не конкретизируют где именно ошибка?

А ведь на сервере можно определить ошибки и так:

$err = [
    "name"=>"имени", //.... и т.д.
];


которому будет предшествовать текст "Заполните поле ".

Если отправлять данные таким образом

data: "name=" + name + "&email=" + email + "&password ...

то при каждом новом "добавить еще поля" нужно будет править код. А метод JQ .serialize() как раз и вернет поля формы и их значения как GET параметры - "name=" + name + "&email=" + email + "&password ...
А то что у вас не работает, так это не из-за применения этого метода и от того, что в функцию передается ссылка на форму.

Последний раз редактировалось laimas, 11.10.2016 в 06:01.
Ответить с цитированием
  #10 (permalink)  
Старый 11.10.2016, 06:33
Профессор
Отправить личное сообщение для warren buffet Посмотреть профиль Найти все сообщения от warren buffet
 
Регистрация: 08.07.2016
Сообщений: 1,332

konsty, хочешь попросить помощи - прояви увОжение к читателю, соблюдай политес бб-кодами.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упростить скрипт, помогите плз. volodyal Общие вопросы Javascript 1 05.07.2015 12:36
нужна помощь, помогите плз iscripter Общие вопросы Javascript 7 06.03.2015 15:00
помогите с формой пожертвований Tarasxxx Элементы интерфейса 0 10.02.2015 00:40
Выезжающая картинка. помогите плз новичку(( animus Элементы интерфейса 4 22.04.2011 14:31
Помогите с отсчетом ПЛЗ! DIALUP Общие вопросы Javascript 3 28.03.2010 01:13