【发布时间】:2015-11-15 15:25:39
【问题描述】:
提交表单时如何保持在当前位置而不是来到页面顶部?
<script>
$(document).ready(function(){
$('#ok').click(function(){
var dt=$('#form').serialize();
$.post('data.php',dt,function(data){
})
});
});
</script>
<script>
function submitnow() {
$('#form').submit();
}
</script>
<div onclick='submitnow();'></div>
<form action='' method='post' id='form'>
<input type="hidden" id="ok" name='ok' value="ok">
</form>
更新 非常抱歉,我忘记发布我使用 onclick 提交的表单。但我认为这只是将代码添加到函数中,但事实并非如此:/
<script>
function submitnow() {
$(document).ready(function(){
$('#form').submit(function(){
var dt=$(this).serialize();
$.post('data.php',dt,function(data){
});
return false;
});
});
}
</script>
这是我目前使用的代码,它会将我滚动到顶部:
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
$(document).ready(function(){
$('#form').submit(function(){
var dt=$(this).serialize();
$.post('data.php',dt,function(data){
});
return false;
});
});
</script>
<script>
function submitnow() {
$('#form').submit(function(){
});
}
</script>
<div onclick='submitnow();'></div>
<form action='' method='post' id='form'>
<input type="hidden" id="ok" name='ok' value="ok">
</form>
【问题讨论】:
-
不,
$(document).ready(function(){ $('#form').submit(function(){ var dt=$(this).serialize(); $.post('data.php',dt,function(data){ }); return false; }); });必须放在函数之外。然后在函数 submitnow() 中,您可以调用$("#form").submit();来触发提交 -
嗯好吧,我从一开始就是这样做的,但我不明白为什么页面在提交时仍然向上滚动:S
-
不,一开始您处理了按钮的 .click 事件(请参阅您的问题)。您必须使用 return false 处理 .submit 事件(请参阅我的评论),否则您的页面将重新加载并向上滚动
-
哦,我明白了。但我现在使用 .submit 并且它仍然滚动.. 我会在几秒钟内用当前代码更新帖子
-
在 submitnow() 函数中,您必须触发提交,而不是处理提交。
function submitnow() { $('#form').submit(); }我测试并正确调用了 .post() (又名 ajax 请求)。如果它仍然无法按预期工作,请提供页面链接或完整的 jsfiddle(不是这个小示例)
标签: javascript