Jquery и контактная форма проверки - PullRequest
1 голос
/ 15 июля 2011

Я пытаюсь добавить правила проверки к части электронной почты контактной формы, чтобы поле не было пустым и являлось действительным адресом электронной почты.

Как мне этого добиться?

Я также хотел бы добавить автоматический ответ, который отправляется пользователю после отправки формы?

$("#ContactForm").submit( function() {
    $.ajax({
        type: "POST",
        url: "{homepage}mailer/mailer.php",
        data: $(this).serialize(),
        success: function(data){
            $('#fancybox-content #quote_box #ContactForm').html('<div style="padding-top: 15px; text-align:center;">Message Sent! Thank you.</div>');
            setTimeout(function(){
                $.fancybox.close();
            },3500);
        }
    });
});

<form id="ContactForm" name="ContactForm" action="{homepage}mailer/mailer.php" method="post">
    <input type="hidden" name="_sendto" value="email@test.com">
    <input type="hidden" name="_subject" value="Quote Request">
    <label for="name">Name</label><input type="text" name="name"><br>
    <label for="title">Title</label><input type="text" name="title"><br>

    <label for="customer_segment">Customer segment</label><input type="text" id="customer_segment" name="customer_segment" value=""><br>
    <label for="company">Company</label><input type="text" name="company"><br>
    <label for="email">Email</label><input type="text" name="email"><br>
    <label for="phone">Phone</label><input type="text" name="phone"><br>
    <label for="city">City</label><input type="text" name="city"><br>
    <label for="state">State</label><input type="text" name="state"><br>
    <label for="country">Country</label><input type="text" name="country"><br>
    <label for="contact_interested_in">Product interested in</label><input type="text" name="prod_inquiry" value="{exp:cookie_plus:get name="" parse="inward"}{exp:channel:entries entry_id="{cookie}"}{title}{/exp:channel:entries}{/exp:cookie_plus:get}"><br>
    <label for="contact_preference">Contact preference</label>
    <input class="radio" type="radio" name="contact_preference" value="Phone"> <span class="label">Phone</span>
    <input class="radio" type="radio" name="contact_preference" value="Email"> <span class="label">Email</span><br>
    <input id="button" type="submit" value="Submit" />
</form>

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

Ответы [ 4 ]

3 голосов
/ 15 июля 2011

Взгляните на http://unwrongest.com/projects/valid8/ (есть еще около 500 других плагинов для проверки формы). Этот просто мой любимый, так как он очень тонкий и простой.

0 голосов
/ 15 июля 2011

Поскольку вы не знакомы с работой стороннего разработчика, а сайт создан с ExpressionEngine , вы можете подумать о замене обработчика пользовательских форм на популярный Solspace Freeform Module * 1004.*:

Свободная форма позволяет создавать простые и гибкие формы на вашем сайте для сбора информации от ваших пользователей.

Публикации в ваших формах регистрируются и организуются в вашей базе данных EE, а также при необходимости отправляются по почте на электронные письма с уведомлениями, которые вы отправляете.

Вы можете получать вложения от отправителей и хранить эти вложения в своембазы данных, а также отправленные по почте в виде вложений администраторам или отправляющему пользователю.

Среди множества функций Freeform предоставляет проверку формы на стороне сервера, уведомление и подтверждение по электронной почте, а также интеграцию CAPTCHA -в качестве бонуса, Freeform бесплатен и его функции хорошо документированы .

You coВы даже можете использовать jQuery Validation Plugin вместе с Freeform, чтобы обеспечить проверку данных на стороне клиента или отправить форму с помощью асинхронного HTTP (Ajax) запроса.

0 голосов
/ 15 июля 2011

Будьте осторожны, если вы пытаетесь проверить адрес электронной почты по регулярному выражению, которое вы найдете в Google.AFAIK, нет единого регулярного выражения, которое могло бы правильно проверить адрес электронной почты в соответствии с RFC 2822 .Большинство из них, которые вы обнаружите, будут либо неправильно отклонять действительные адреса электронной почты, либо принимать недействительные. Ближайшее регулярное выражение, которое я нашел, было напечатано на полторы страницы.

РЕДАКТИРОВАТЬ:

Например, все этодействительные адреса электронной почты, и если вы проверяете адреса электронной почты, все они должны быть разрешены:

  1. Abc \ @def "@ example.com
  2. " Фред Блоггс "@ example.com
  3. "Джо \ Удар" @ example.com
  4. "Abc @ def" @ example.com
  5. customer/department=shipping@example.com
  6. $A12345@example.com
  7. !def!xyz%abc@example.com
  8. _somename@example.com
0 голосов
/ 15 июля 2011

Заключите ваш вызов $ .ajax в оператор if, который проверяет входное значение электронной почты с помощью регулярного выражения. Google "регулярное выражение электронной почты Javascript", и вы найдете то, что вы ищете.

Обратите внимание, что проверка форм в javascript не очень безопасна, поскольку любой, кто обладает знаниями в области программирования, может проверить источник вашей страницы и обойти проверку, отправив сообщение прямо в ваш php-скрипт. Лучше проверить в «mailer.php», вернуть любые ошибки в ваш $ .ajax success-callback и просто использовать javascript для отображения пользователю сообщения об ошибке.

...