2013-06-25 2 views
1

У меня есть контактная форма, которая скрыта при загрузке страницы. Затем контактную форму можно просмотреть, нажав кнопку формы контакта, в результате чего она будет сдвигаться и сдвинуться вниз. Проблема в том, что при отправке формы страница обновляется, и если есть сообщение об ошибке или сообщение об успешном завершении, оно скрыто, потому что страница перезагружена, вам нужно нажать кнопку «контактная форма», чтобы увидеть ее. Я не большой с jquery или php. Любая помощь приветствуется. После отправки формы мне нужно, чтобы сообщения отображались.Контактная форма JQuery скрывается после отправки

вебсайт http://www.carlisleironing.co.uk/index.php

Мой JQuery является

$(document).ready(function() { 
    $("#contactLink").click(function() { 
     if ($("#contactForm").is(":hidden")) { 
      $("#contactForm").slideDown("slow"); 
     } else { 
      $("#contactForm").slideUp("slow"); 
     } 
    }); 
}); 
+2

Ajax sumbit the form, вот пример, http://net.tutsplus.com/tutorials/javascript-ajax/submit-a-form-without-page-refresh-using-jquery/, идея в том, что когда вы отправляете форму, которую вы не перезагружаете. – We0

+0

Вы также можете проверить, отображается ли ошибка, и отобразить форму: 'if ($ (" # error "). Is (": visible ")) {// показать форму}' – stackErr

+0

@ We0 'dataString = 'name = '+ name +' & email = '+ email +' & phone = '+ phone; 'Что это за нечестивый беспорядок! ??!?! Используйте 'serialize'! –

ответ

1

добавить следующее (как раз перед последним }); на ваш вопрос):

if ($('#contactForm #error').size() > 0){ 
    $('#contactForm').slideUp('slow'); // or just .show(); 
} 

Проверьте, присутствует ли элемент #error и, если да, то покажите форму. Я не уверен, как выглядит ваше сообщение о успехе, но подобный тест также может быть одним из них.

Что касается других ответов: да, вы можете сделать AJAX submit, но есть вероятность (и я предполагаю здесь контекст), что выходит за рамки этого вопроса. Это будет включать специальную обработку запросов и добавление дополнительного лирификатора валидации (y/ies).

+0

Это хороший ответ, очень приятный. –

+0

Какие дополнительные библиотеки, если у него уже есть jquery? Имейте один дополнительный запрос, который он может просто скопировать большую часть кода из исходного файла. Лучшая обработка ошибок и лучшая методология. IDK, если он работает, я думаю, это работает, но это похоже на то, что технически ваш автомобиль может ездить на трех колесах ... – We0

0

Вы можете использовать Ajax, чтобы отправить форму и показать результат без перезагрузки страницы:

$('form').submit(function() { 
    $.post($(this).attr('action'), $(this).serialize(), function(data) { 
     console.log(data); 
    }); 
    return false; 
}); 
0

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

Вы можете назвать кнопку отправки. Если пользователь нажимает кнопку отправки, значение кнопки отправляется с запросом на получение или отправку. Затем вы можете изменить поведение своей php-страницы, чтобы не скрывать форму контакта, если форма была отправлена.

<input type="submit" name="theSubmitButton" value="Submit!" /> 

В PHP $_GET['theSubmitButton'] (или $ _POST, если вы используете пост запрос) будет установлен, если пользователь представил форму, и он не будет установлен, если это не так. Вы можете использовать isset($_GET['theSubmitButton']), чтобы проверить, действительно ли пользователь представил страницу и соответствующим образом изменил класс контактной формы.