html文档中的php表单,避免了在提交表单时重定向到顶部

时间:2019-03-04 09:13:29

标签: php html redirect

我在我的html代码中包含了一个php表单,并将其从index.html更改为index.php。联系人表格运行良好,可以发送所有内容。提交后,用户将收到消息“谢谢。消息已发送。”。但是,刷新页面时,它会跳到标题,并且用户必须再次向下滚动才能看到该消息。

我知道为什么会这样。几天前,我已包含以下代码:

$(document).ready(function(){
$(this).scrollTop(0);
});

之所以这样做,是因为当有人访问我的网站时,他首先被定向到联系表,而页面没有首先加载到页眉。但是,现在,当有人提交邮件时,页面将再次滚动到顶部。您知道如何避免这种情况吗?如果用户在访问网站时首先看到标题,但在提交消息时应将其重定向到表单部分,那就太好了。

感谢您的帮助。

5 个答案:

答案 0 :(得分:2)

使用Cookie: https://www.w3schools.com/js/js_cookies.asp

$(document).ready(function(){
    if(!getCookie(cname)){
       $(this).scrollTop(0);
    }
});

$( "#formID" ).submit(function( event ) {
    setCookie(cname, cvalue, exdays)
});

答案 1 :(得分:1)

使用jQuery时,return false在调用时会做3件事:

  1. event.preventDefault();
  2. event.stopPropagation();
  3. 停止回调执行,并在调用时立即返回。

有关更多信息和示例,请参见jQuery Events: Stop (Mis)Using Return False

Ref

答案 2 :(得分:0)

如果条件检查表单是否尚未提交,则用PHP包裹该特定JS代码块。例如

<?php if (!$formSubmitted) { ?>

[JS code here]

<?php } ?>

答案 3 :(得分:0)

尝试一下

$('form').submit(function(e)
{
    e.preventDefault();
    $.ajax({
        type: 'POST',
        url: "your_page.php",
        data: $('form').serialize(), 
        success: function(response) { /*what to do on response*/ },
    });
});

在这里,我阻止默认情况下重新加载并发送ajax帖子

答案 4 :(得分:0)

基本上,您有两种可能的状态。第一种可能的状态是您想滚动到顶部时,另一种状态是当您不想滚动到顶部时。假设您知道要测试的条件。在这种情况下,您的代码将如下所示:

<?php
    if ($condition) {
?>
        //your scrolling JS code
<?php
    }
?>

现在,我们如何确定$condition?一种想法是将一些值存储在用户的$_SESSION中,这将是一个逻辑值,它将确定我们是否需要滚动。您应该检查$_SESSION中是否存在该值,如果不存在,则将其默认设置为true或false(取决于您的实际需要)。