Благодарственное оповещение при отправке формы

У меня есть очень простая форма на http://www.happyholidaylites.com/contact.html. и он отлично работает. Когда вы отправляете форму, пользователь попадает в index.html без сообщения о том, что форма была отправлена. Я хочу инициировать предупреждение, в котором говорится: «Ваша форма была отправлена» с помощью кнопки x. Мой код выглядит так:

      <form method="post" id="myForm" action="dynaform.php">

      <input type='hidden' name='rec_mailto' value='[email protected]'>
      <input type='hidden' name='rec_subject' value='New Contact Form'>
      <input type='hidden' name='rec_thanks' value='index.html'>

so on and so forth.....

Последняя строка сообщает форме, что делать после нажатия кнопки отправки, но я не хочу, чтобы она указывала браузеру на индекс, скорее мне нужно всплывающее окно javascript с сообщением об успешном завершении. Любые идеи?


person JCHASE11    schedule 17.09.2009    source источник


Ответы (4)


Почему не просто onSubmit?

<form method="post" id="myForm" action="dynaform.php" onSubmit="alert('Thank you for your feedback.');" >
person Dominic Bou-Samra    schedule 17.09.2009
comment
Где гарантия того, что форма действительно была отправлена? - person roryf; 17.09.2009
comment
Это действительно не должно быть помечено как ответ, поскольку Рори заявляет, что нет гарантии, что форма была отправлена. Метод onSubmit предназначен для предварительной проверки данных формы и отмены при необходимости -1 - person James; 17.09.2009
comment
Я понимаю, но для моих целей это именно то, что я хотел. Мне нужно было обходное решение. Мне не нужно решение, которое будет работать с формой. Скорее просто предупреждение, независимо от того, отправлена ​​​​форма или нет. - person JCHASE11; 17.09.2009
comment
Да, но это решение неверно. По сути, вы сообщаете пользователю, что его отправка прошла успешно, и вы свяжетесь с ним... когда на самом деле запрос на отправку еще даже не был отправлен! Поэтому, если они получат это предупреждение, они решат, что все в порядке, и, по-видимому, вскоре со мной свяжутся, закроют диалоговое окно и могут легко перенаправить со страницы до того, как страница будет отправлена. Настраиваешь себя на неудачное падение в моих глазах! Начни так, как хочешь, и продолжай... - person James; 17.09.2009
comment
Джеймс, ты совершенно прав, ты заслуживаешь ответа... Но это все, что я ищу. Форма отправляется каждый раз без проблем. Хотя я ценю твои слова. - person JCHASE11; 17.09.2009
comment
Я думаю, пока решение работает для вас, просто предупредите, хотя в будущем я бы определенно не советовал его! Лично, если бы я ДОЛЖЕН отображать предупреждение после отправки, я бы написал пользовательскую функцию и назвал ее OnSubmit формы, которая (через javascript) отправила бы форму, а затем вывела послесловие с предупреждением. Это, по крайней мере, гарантирует, что форма была отправлена ​​до того, как пользователь был предупрежден. - person James; 17.09.2009

Честно говоря, вам лучше перенаправить на другую страницу, чтобы пользователь не повторно отправил страницу при обновлении. Взгляните на Post/Redirect/Get Pattern.

Всплывающие окна могут быть чрезвычайно раздражающими на веб-сайтах. Вы должны создать страницу с именем «thank-you.html», на которую вы можете перенаправить пользователя при успешной отправке, которая имеет доступ к параметрам навигации по сайту, или даже просто перенаправить обратно на страницу формы через несколько секунд. .

person James    schedule 17.09.2009
comment
Специально запрашивается всплывающее окно, как не использовать всплывающее окно? - person cJc; 04.10.2020
comment
@cjc, потому что я бы предпочел лучший и более надежный подход к проблеме. Не существует правил, согласно которым вы не можете предлагать альтернативные подходы в качестве ответа, особенно когда предлагаемое (и даже принятое решение) изначально ошибочно. - person James; 04.10.2020

Вместо перенаправления на index.html перенаправляйте на Thank.html; ваши пользователи будут благодарны вам, потому что все ненавидят всплывающие окна!

person Josh Stodola    schedule 17.09.2009

Похоже, ваш PHP-скрипт обрабатывает отправку формы, обрабатывая ввод и перенаправляя браузер на значение в поле rec_thanks.

Вы можете добавить что-то вроде onsubmit="YourJavaScriptFunction()" в тег формы, чтобы добавить поведение на стороне клиента до фактической отправки формы. Внутри этой функции вы можете выполнять проверку, использовать alert('Thank You!') и т. д.

person Mayo    schedule 17.09.2009