0

好的,我已经用谷歌搜索了几个小时,但没有发现任何有用的东西。我迫切需要帮助

我有一个包含以下元素的表格。

<form action="sendmail.php" method="post" name="enquiry">
    <table> 
        <tr>
            <td>Name:-</td> 
            <td><input type="text" name="name" /></td>
        </tr> 
        <tr>
            <td>Company:-</td>
            <td> <input type="text" name="company" /></td>
        </tr>
        <tr>
            <td>E-Mail:-</td>
            <td><input type="text" name="email" /></td> 
        </tr>
        <tr>
            <td>Contact:-</td>
           <td> <input type="text" name="contact" /></td>
        </tr>
        <tr>
            <td>Requirement:-</td>
            <td><textarea name="msg"></textarea></td>
        </tr>
    </table>
    <input type="submit" value="submit" onclick="return validation(this.form);">
    <input type="reset" value="Reset" />
</form>

并且 php 有这样一行:

<?php
if(mail($to, $subject,$message)) {
   echo "<SCRIPT LANGUAGE='JavaScript'>alert('Your Enquiry was sent successfully we  will get back to you shortly');
              window.location.href='javascript:history.go(-1)';
              document.enquiry.reset();
         </SCRIPT>";
}
?> 

然后有一个“else”,代码相同,但消息不同。

问题是当它重定向回表单页面时,字段中仍然有数据。我更喜欢的是一个干净的表单,当用户返回页面时没有填写任何数据。

请注意,我是 javascript 的新手,因此请尝试建议一个易于理解的修复程序。

提前非常感谢!

4

6 回答 6

2

那是因为您要回到历史记录中-浏览器会在您后退/前进时记住表单。

您所做的并不是“正常”的用户体验——我建议您在“sendmail.php”文件中打印出一个漂亮的页面来表示感谢,然后让用户导航到他们想要在您的网站上访问的任何地方。

于 2012-10-25T10:35:16.210 回答
1

正如 Ed 所说,您正在回到历史,浏览器会记住它。

尝试这个:

而不是这一行:window.location.href='javascript:history.go(-1)';

写 :window.location.href='RelativePathToActualForm';

于 2012-10-25T10:37:38.050 回答
1

您的问题在于 javascript 代码:

window.location.href='javascript:history.go(-1)';
document.enquiry.reset();

删除此代码

编辑:

使用此代码:

if(mail($to, $subject,$message)){?>
    <SCRIPT LANGUAGE='JavaScript'>
    alert('Your Enquiry was sent successfully we  will get back to you shortly');
    window.location.href='/*YOUR FORM PAGE LINK*/';
    </SCRIPT>
<?php } 
于 2012-10-25T10:35:00.910 回答
0

简单的解决方案:只需使用 jquery - 在 head 部分中使用一行以在您的页面中包含 jquery。

您提供的 javascript 代码段应包含:

window.location="theform_page_address" ;

代替

window.location.href='javascript:history.go(-1)';
              document.enquiry.reset();

并在表单页面地址中:在 head 部分添加以下 js 片段:

<script type="text/javascript">
    $(document).ready(function(){


    $('input').val('');
    $('select').val('-1');

    $('textarea').val();

    });

</script>

编辑:我假设您的表单具有inputtextarea具有空白默认值的 select元素,以及具有 -1 作为默认选项值的元素。

于 2012-10-25T10:48:25.043 回答
0

先看使用php session-based flash messages的例子http://mikeeverhart.net/php/session-based-flash-messages/

常规流程:

  1. 用户填写表格
  2. 出版社提交
  3. 您的 php 脚本 sendmail.php 验证表单
  4. 如果有一些验证错误 [设置错误信息]
  5. 如果有一些邮件发送错误 [设置错误信息]
  6. 如果一切正常[设置成功消息]
  7. 从 php 调用重定向到表单显示页面。

[设置错误|成功消息] - 使用上面提供的链接如何设置消息。

现在重要的部分是每次呈现表单时,您应该检查设置的消息,如果有一些消息 - 显示它们。

这些消息是如何工作的?它只是将消息设置为会话($_SESSION)数组,然后在显示消息时,从会话中取消设置消息。

于 2012-10-25T10:49:30.613 回答
0

处理完表单发布后,您应该重定向到另一个页面(或再次重定向到您的表单)并在那里显示您的消息,例如:

php header("Location: form.php?formpostwassuccessful=1");

然后是表单页面

if(isset($_GET['formpostwassuccessful']))
  echo "Thank you. Your form was sent.";

发布后还看到重定向?

于 2012-10-25T10:41:58.093 回答