提交来自时不要自动滚动到顶部。保持现状

时间:2015-11-12 22:06:13

标签: javascript php jquery html ajax

我不想在我提交的表单时自动向上滚动页面。我希望保持与提交表单时相同的位置。我怎么能这样做?

<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); - 表格没有提交,页面仍然滚动到顶部

1 个答案:

答案 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>