我在我的html代码中包含了一个php表单,并将其从index.html更改为index.php。联系人表格运行良好,可以发送所有内容。提交后,用户将收到消息“谢谢。消息已发送。”。但是,刷新页面时,它会跳到标题,并且用户必须再次向下滚动才能看到该消息。
我知道为什么会这样。几天前,我已包含以下代码:
$(document).ready(function(){
$(this).scrollTop(0);
});
之所以这样做,是因为当有人访问我的网站时,他首先被定向到联系表,而页面没有首先加载到页眉。但是,现在,当有人提交邮件时,页面将再次滚动到顶部。您知道如何避免这种情况吗?如果用户在访问网站时首先看到标题,但在提交消息时应将其重定向到表单部分,那就太好了。
感谢您的帮助。
答案 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件事:
event.preventDefault();
event.stopPropagation();
有关更多信息和示例,请参见jQuery Events: Stop (Mis)Using Return False。
答案 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(取决于您的实际需要)。