Мой сайт состоит из нескольких файлов. Во-первых, у меня есть index.html, в котором находятся данные моей формы. Он содержит JQuery, поэтому, когда пользователь нажимает submit, сайт отправляет заполненную информацию в .php-файл, который обрабатывает всю информацию (проверьте информацию и загрузите ее в базу данных MySQL, если информация верна). .Html-файл форматируется с помощью .css-файла.

Все это работает правильно. Ошибок в JQuery, HTML-странице или PHP-файле нет.

Затем я хотел бы добавить функцию, которая может выполнять одно из следующих двух действий:

  • В форме есть три обязательных текстовых поля. Когда пользователь не может заполнить один из них или не может пройти проверку электронной почты, расположенную в .php-файле, я хотел бы, чтобы текстовые поля, в которых возникает ошибка, были выделены красным цветом (например, цвет фона текстовое поле должно стать красным).

  • В случае успеха форма должна быть скрыта, а другая форма (расположенная в том же месте, но скрытая через файл .css) станет видимой. Он содержит только один ярлык и имеет текст: «Отправка успешно завершена».

Я не слишком разбираюсь в JQuery, поэтому был рад увидеть, что JQuery, вызывающий .php-файл, уже работает. Тем не менее, я не знаю, как мне начать решать вышеописанную проблему. Может ли кто-нибудь предоставить мне простой пример или объяснение, как продолжить?

Файл Index.html:

<html>
<head>
    <title>Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <link rel="stylesheet" href="resources/assets/styles.css" type="text/css"  />
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function(){
        $("#contactForm").validate({
            debug: false,
            submitHandler: function(form) {
                // do other stuff for a valid form
                $.post('resources/assets/sharedatabase.php', $("#contactForm").serialize(), function(data) {
                 // $('#contactForm').hide();
                  $('#results').html(data);
                });
            }
        });
    });
    </script>

</head>

<div class="form">
<div class="formcontainer">
<form action="" method="post" id="contactForm" name="contactForm">
<fieldset>
And so on...


<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
...
    }
    */
}

Далее PHP-файл:

if (($_SERVER['REQUEST_METHOD'] == 'POST' && ... $_SERVER['REQUEST_METHOD'] == 'GET')
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        if (!empty($empty_name)) {
            echo json_encode(array(
                'error' => true,
                'msg'   => "Name"
            ));
            exit;
            }
        elseif (!empty($empty_company))  {
            echo json_encode(array(
                'error' => true,
                'msg'   => "Company"
            ));
            exit;
            }
        elseif (!empty($empty_email))     {
            echo json_encode(array(
                'error' => true,
                'msg'   => "Email"
            ));
            exit;
            }
        else    
             {
            echo json_encode(array(
                'error' => true,
                'msg'   => "Something else went wrong."
            ));
            exit;
            }
    }
}
//send
else
{
    mysql_connect("site.nl", "username", "********") or die ('Error: ' . mysql_error());
    mysql_select_db ("databasename") or die(mysql_error());

    //creating values here

    $query="xxxxx";
    mysql_query($query) or die ('Error updating database');
    mysql_close();

    echo json_encode(array(
                'error' => false,
            ));
            exit;
}
?>
0
Joetjah 10 Сен 2012 в 18:34
Вы отправляете форму через AJAX или в файл PHP?
 – 
donutdan4114
10 Сен 2012 в 18:41
Я использую JQuery для отправки данных формы в файл PHP.
 – 
Joetjah
10 Сен 2012 в 18:44
Вы можете использовать .done() и .fail() api.jquery. com / jQuery.ajax / # example-3
 – 
Ron van der Heijden
10 Сен 2012 в 18:57
Я попробую это, когда вернусь домой
 – 
Joetjah
10 Сен 2012 в 19:05

1 ответ

Лучший ответ

Перед отправкой данных проверьте наличие обязательных полей. Лучший способ показать ошибки формы - просто добавить к элементам формы класс «error».

С помощью CSS отформатируйте класс ошибки как угодно (красный фон в поле формы или что-то в этом роде). В jQuery вы можете сделать что-то вроде:

// Check form fields for error.
if($('#name').val == ""){
  // Apply an error class.
  $('#name').addClass("error");
}

// On a successful submission, hide the old form and show the new one.
$('#oldForm').hide();
$('#newForm').show();

Не видя вашего кода отправки, я не могу вам больше помочь, но вы можете выполнить внутреннюю проверку и передать результат во внешний интерфейс с помощью AJAX. Это позволит вам убедиться, что отправленная форма попала в базу данных, прежде чем показывать новую форму.

1
donutdan4114 10 Сен 2012 в 18:48
Я зашел так далеко, но застрял. Как я могу после проверки в PHP-файле вернуться на HTML-сайт, если отправка прошла успешно, или, если нет, какое текстовое поле неверно?
 – 
Joetjah
10 Сен 2012 в 18:51
Покажи мне код, пожалуйста. Мне нужно увидеть ваш JavaScript (как вы отправляете форму) и часть вашего PHP.
 – 
donutdan4114
10 Сен 2012 в 18:53
Круто, поэтому в своем ответе JSON верните имя поля, которое вызывает ошибку. Затем в своем jQuery проверьте, истинно ли «ошибка», а затем добавьте класс ошибки в «поле».
 – 
donutdan4114
10 Сен 2012 в 19:07