我不想在我提交的表单时自动向上滚动页面。我希望保持与提交表单时相同的位置。我怎么能这样做?
<script type="text/javascript">
var frm = $('#form');
frm.submit(function (ev) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert('ok');
}
});
ev.preventDefault();
});
<script>
function submitForm2()
{
document.getElementById('form').submit();
popsup();
}
</script>
<div onclick='submitForm2();'></div>
<form id='form' action='' method='post'>
<input name='test' value="ok">
</form>
我尝试了链接中的解决方案; 在新窗口中打开页面返回false结果,在新窗口中,页面在提交后自动滚动到顶部。
&#34;#&#34;要么 #! in action =表单未提交,页面滚动到顶部。
的javascript:无效(0); - 表格没有提交,页面仍然滚动到顶部
答案 0 :(得分:2)
document.getElementById('form').submit();
不会触发frm.submit
处理程序。使用$('#form')。submit()代替,因为提交()的jQuery版本调用任何onsubmit处理程序,而vanilla Javascript submit()会绕过它们。
修改强>
另一件事 - 添加提交处理函数的脚本正在立即执行 - 在表单呈现之前。所以它可能失败了。此外,您似乎还有一个任性的<script>
标签。试试这个:
<script type="text/javascript">
$(document).ready(function() {
var frm = $('#form');
frm.submit(function (ev) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
alert('ok');
}
});
ev.preventDefault();
});
});
function submitForm2() {
$('#form').submit();
}
</script>