Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
Сергей124
0 / 0 / 0
Регистрация: 07.06.2018
Сообщений: 2
#1

Форма не выполняет валидацию

07.06.2018, 18:55. Просмотров 120. Ответов 3
Метки нет (Все метки)

Здравствуйте, форма обратной связи сделана с помощью ajax, должна производит проверку как минимум на заполненные поля, но вместо это сразу отправляет пустые строки на почту ... сайт webneskin.ru кнопка формы GetApp
Код формы

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
 <div id="modalmain" class="animated-modal" >
             <div id="formsend">
             <h3>Внимание</h3>
             <p id="error">Оставьте ваши контактные данные и наш консультант секунд</p>
            <form id="application" action="application.php" method="POST" name="application">
                <input name="name" id="applicationName" maxlength="20" placeholder="Введите ваше имя" required />
                <input name="email" type="email" id="applicationEmail" maxlength="30" placeholder="Введите ваш E-mail" required/>
                <input name="phone" type="Tel" id="applicationTelephone" maxlength="20" placeholder="Введите ваш телефон" required />
                <button class="applicationButton" type="submit" form="application" onclick="sendAjaxForm('formsend', 'application', 'application.php')"> 
                Отправить</button>
            </form></div>
</div>
Код js отвечающий за форму

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function sendAjaxForm(result_id,application,url) {
                jQuery.ajax({
                    url:     url,
                    type:     "POST",
                    dataType: "html",
                    data: jQuery("#"+application).serialize(), 
                    success: function(response) {
                    document.getElementById(result_id).innerHTML = response;
                },
                error: function() {
                $('#error').html("<p>Чуть повнимательнее</p>");
                }
             });
 
             $(':input','#application')
                .not(':button, :submit, :reset, :hidden')
                .val('')
                .removeAttr('checked')
                .removeAttr('selected');
    }
Код php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (isset($_POST['name'])) {$name = $_POST['name'];}
    if (isset($_POST['phone'])) {$phone = $_POST['phone'];}
    if (isset($_POST['email'])) {$email = $_POST['email'];}
    if (isset($_POST['formData'])) {$formData = $_POST['formData'];}
 
    $to = "fakkoser@mail.ru"; /*Укажите адрес, га который должно приходить письмо*/
    $sendfrom   = "support@sitename.ru"; /*Укажите адрес, с которого будет приходить письмо, можно не настоящий, нужно для формирования заголовка письма*/
    $headers  = "From: " . strip_tags($sendfrom) . "\r\n";
    $headers .= "Reply-To: ". strip_tags($sendfrom) . "\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n";
    $subject = "$name";
    $message = "<b>Имя пославшего:</b> $name
<b>Телефон:</b> $phone";
    $send = mail ($to, $subject, $message, $headers);
    if ($send == 'true')
    {
    echo 'Спасибо за отправку вашего сообщения!';
    }
    else
    {
    echo 'Cообщение не отправленно. Пожалуйста, попрбуйте еще раз';
    }
} else {
    http_response_code(403);
    echo "Попробуйте еще раз";
}?>
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2018, 18:55
Ответы с готовыми решениями:

Письмо не проходит валидацию
Решил тут сделать активацию пользователей на самописном движке. Письма-то...

Форма, которая при нажатии на кнопку выполняет сценарий
Здравствуйте, подскажите пожалуйста новичку. Есть страничка, на ней...

Как реализовать валидацию?
Добрый день.Пишу валидацию для сайта.Имею отдельные валидаторы. Например вот...

Подправить валидацию вводимых данных
Задание: Вводить элементы множеств в формате bcbc (c - цифра, b - буква...

Как сделать чтоб форма обратной связи не отправляла письмо если форма не заполнена
Добрый день. Подскажите пожалуйста как сделать чтоб форма обратной связи не...

3
tarasalk
1161 / 683 / 277
Регистрация: 13.06.2013
Сообщений: 2,396
07.06.2018, 19:06 #2
Через submit надо, а не onclick
0
Сергей124
0 / 0 / 0
Регистрация: 07.06.2018
Сообщений: 2
07.06.2018, 19:37  [ТС] #3
Почти но не совсем то, попробовал по документации jquery вот так
Javascript
1
2
3
4
5
6
$("#application").submit(
        function(){
            sendAjaxForm('result_id', 'ajax_form', 'application.php');
            return false; 
        }
    );

а здесь убрал onclick
HTML5
1
2
<button class="applicationButton" type="submit" form="application"> 
                Отправить</button>
Теперь валидацию проходит, но только открывает новую страничку с текстом успеха как в php, а надо как в jquery коде, при успехе поменять на сообщение в форме обратной связи
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
 function sendAjaxForm(result_id,application,url) {
                jQuery.ajax({
                    url:     url,
                    type:     "POST",
                    dataType: "html",
                    data: jQuery("#"+application).serialize(), 
                    success: function(response) {
                    document.getElementById(result_id).innerHTML = response;
                },
                error: function() {
                $('#error').html("<p>Чуть повнимательнее</p>");
                }
             });
0
Mr_Nerub
23 / 23 / 15
Регистрация: 05.06.2018
Сообщений: 83
08.06.2018, 12:34 #4
Цитата Сообщение от Сергей124 Посмотреть сообщение
Теперь валидацию проходит, но только открывает новую страничку с текстом успеха как в php
Если я правильно понял, то у вас работает и отправка через аякс, и сама форма отправляет данные в файл, указанный в action. Вернитесь к предыдущему варианту и попробуйте убрать этот код:
Javascript
1
2
3
4
5
$(':input','#application')
   .not(':button, :submit, :reset, :hidden')
   .val('')
   .removeAttr('checked')
   .removeAttr('selected');
внутрь параметра success. Думаю, это из-за этих строк php работает с пустыми строками.

Добавлено через 4 минуты
UPD.
Еще можно попробовать внутрь функции, работающей с аякс, вставить либо return false, либо preventDefault(), чтобы сама форма не отправляла данные файлу в action.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.06.2018, 12:34

Не выполняет скрипт полсностью
&lt;input type=button class=&quot;buttons&quot; value=&quot;Сделать backup&quot;...

Не выполняет запрос INSERT
INSERT INTO matches_g SET id= '0', tour_id= '1', group= 'group2', team1_id=...

Регистрационная форма и форма авторизации
Здравствуйте! Есть готовые файлы, которые работают как регистрационная форма...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru