单击“提交”后滚动到div的底部

时间:2012-06-27 07:36:16

标签: jquery forms submit

我写了一个表单,需要由用户编译才能进行一些计算。 AJAX脚本使结果出现在“SUBMIT”按钮后面的div中。 但是我注意到不耐烦的用户往往会在“提交”上多次点击,因为他们没有看到结果显示在按钮本身之后。 我想知道如何滚动到div的底部([id = results]),其中包含用户点击“SUBMIT”时的结果。 当然提交按钮不能包含href属性,所以我不知道如何创建一个html锚...我想我需要另外一点jquery。

编辑:源代码:calculator1.php

<form name="formpeso" id="formpeso" action="" method="post">
        <div>
            <label for="altezza">Inserisci la tua altezza <strong>(in cm)</strong></label>
            <input type="text" name="altezza" id="altezza" onkeyup="commadot(this)" value="" />
[FOO... FOO...]     
            <input type="submit" id="submit" value="send data" />
     </div>   
    </form>

<div id="results">RESULTS WILL APPEAR HERE AFTER CLICKING ON SUBMIT</div>

这是验证文本字段并将结果显示(处理成calculator2.php)到

的函数
$(document).ready(function(){
    $("#formpeso").validate({
        debug: false,
        rules: {
            altezza: {min:20, required: true},
            peso: {min:1, required: true},
            vita: {min:1, required: true},
            fianchi: {min:1, required: true},
            collo: {min:1, required: true},
            polso: {min:1, required: true},
        },
        messages: {
            altezza: "Non hai compilato il campo!<br />",
            peso: "Non hai compilato il campo!<br />",
            vita: "Non hai compilato il campo!<br />",
            fianchi: "Non hai compilato il campo!<br />",
            collo: "Non hai compilato il campo!<br />",
            polso: "Non hai compilato il campo!<br />",

        },
        submitHandler: function(form) {
            // do other stuff for a valid form
            $.post('calculator2.php', $("#formpeso").serialize(), function(data) {
                $('#results').html(data);
            });
        }
    });
});

演示:link

2 个答案:

答案 0 :(得分:1)

使用@Zee Tee的版本,但你必须记住,在数据加载到div之后你必须滚动到底部。

这意味着这样做

  var div = $('div#results')
  var o = div.offset().top; //gets the top position of the div
  var h = div.outerHeight(); // gets the height of the div

   div.scrollTop( o + h ); //scrolls page to the bottom of the div

旁边的$ .post部分中
        $.post('calculator2.php', $("#formpeso").serialize(), function(data) {
            $('#results').html(data);
            // do positioning here AFTER loading the data!
        });

试一试:)

答案 1 :(得分:0)

这会将页面滚动到div的底部。

 $('button[type="submit"]').click(){
  var div = $('div#results')
  var o = div.offset().top; //gets the top position of the div
  var h = div.outerHeight(); // gets the height of the div

   div.scrollTop( o + h ); //scrolls page to the bottom of the div

 });

你也可以在ajax调用之前禁用提交按钮,然后在完成ajax时启用它,只是为了额外的措施。

 $('button[type="submit"]').attr('disabled',true);
 $.get(url,function(){
   $('button[type="submit"]').attr('disabled',false);        
 });

这也适用于你的点击功能。

所以它看起来像这样:

 submitbutton = $('button[type="submit"]')

 submitbutton.click(){

 $(this).attr('disabled',true);

  var div = $('div#results')
  var o = div.offset().top; //gets the top position of the div
  var h = div.outerHeight(); // gets the height of the div

   div.scrollTop( o + h ); //scrolls page to the bottom of the div

    //your ajax request
    $.get(url,function(){
      submitbutton.attr('disabled',false);        
    });

 });