避免向上滚动提交表单php

时间:2014-03-14 13:25:17

标签: php forms

我正在制作一份简单的联系表格。

它使用PHP代码在提交后显示“谢谢”消息。

提交表单后,问题就出现了问题。

PHP代码:

    <?php
session_name("fancyform");
session_start();


$_SESSION['n1'] = rand(1,20);
$_SESSION['n2'] = rand(1,20);
$_SESSION['expect'] = $_SESSION['n1']+$_SESSION['n2'];


if(isset($_SESSION['sent']))
{
$success='<h1>Thank you!</h1>';


unset($_SESSION['sent']);
}
?>

表格代码(部分):

    <section id="revealAnim" class="page5">
                <div class="page_container">
          <div class="icono red"></div>
          <p class="titulo_cabecera">Necesito soluciones!</p>
          <p class="subtitulo_cabecera">Rellena el formulario y estaremos en contacto en menos de 24h</p>
<form class="demo-form" name ="demo-form" data-parsley-validate method="post" action="submit.php" >
            <ul>
                <li class="js-hide-label">
                    <label for="name">Nombre:</label>
                    <input type="text" placeholder="Nombre" id="name" name="name" data-parsley-trigger="change" required tabindex="1" autocomplete="off" value="<?php echo (isset($_SESSION['post']['name']) ? $_SESSION['post']['name'] : ''); ?>" >
                </li>
                <li class="js-hide-label">
                    <label for="email">Your Email:</label>
                    <input type="email" placeholder="Your Email" id="email" data-parsley-trigger="change"  name="email"  autocomplete="off" required tabindex="2" value="<?php echo (isset($_SESSION['post']['email']) ? $_SESSION['post']['email'] : ''); ?>">
                </li>
                <li class="js-hide-label">
                    <label for="message">Message:</label>
                    <textarea placeholder="Message…" id="message" name="message" tabindex="3" required data-parsley-trigger="keyup" textarea id="message" data-parsley-minlength="20" data-parsley-maxlength="100" data-parsley-minlength-message = "Come on! You need to enter at least a 20 caracters long comment.." data-parsley-validation-threshold="10"><?php echo (isset($_SESSION['post']['message']) ? $_SESSION['post']['message'] : ''); ?></textarea>
                </li>
             <input   class="btn btn-default"type="submit" name="button" id="button" value="Submit" />
            </ul>
                          <?php echo isset($success)?$success:''; ?>

        </form>
            </section>

我应该使用Javascript表单来避免这个问题吗?或者有任何解决PHP代码的解决方案?。

否则我正在使用ONE PAGE SCROLL因此滚动会破坏我对90%用户的可用性,因为他们必须滚动回到底部页面(它们是5)以查看表单是否已被提交。

谢谢

2 个答案:

答案 0 :(得分:0)

你可以像你建议的那样使用AJAX / Javascript,也可以将访问者重定向到id标签。

http://example.com/index.php#contact

因此,提交后,正文将自动滚动到联系表单。

答案 1 :(得分:0)

默认情况下,在提交表单时会重新加载网页。这就是PHP的工作原理。 当用户单击提交按钮时,会向服务器发送http请求,从而请求新数据,因此必须重新加载页面以预览响应数据。 避免这种情况的方法是使用AJAX

此链接上有一个很好的示例:Submit A Form Without Page Refresh using jQuery