【问题标题】:How to navigate between divs On Success in ajax call如何在 ajax 调用成功时在 div 之间导航
【发布时间】:2015-06-18 17:29:10
【问题描述】:

我正在开发单页应用程序,我一直在 div 之间导航,它很简单,但我想用 ajax 来做......

我想做类似当调用“成功”函数时它应该发送/滚动用户视图到另一个 div .....我已经尝试过 .animate 但失败了....

任何帮助或参考将不胜感激

<div id="SecondInfo"></div>
        <script>
            $("#btnSubmit").click(function () {
                var FirstName = $('#FirstName').val();
                $.ajax({        
                   type: "POST",
                   url: '@Url.Action("Submit", "Home")',
                   dataType: "JSon",
                   data: { "FirstName": FirstName},
                   success: function (data) {
                       console.log(data);
                       $("#SecondInfo").animate({ scrollTop: "0px" });
                   },
                   error: console.log("it did not work"),
                });
            });
        </script>

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    animate() 中使用scrollTop() 并设置您想要关注的元素的偏移量,这里是代码的一部分。

    $('html,body').animate({scrollTop: $('#second').offset().top}, 200, function() {
    //next code
        });
    

    演示 JsFiddle Scroll animate

    【讨论】:

    • 请编辑答案...所以我可以接受...如果您同意,请先替换为“html,body”
    【解决方案2】:

    试试.focus()

    <script>
                $("#btnSubmit").click(function () {
                    var FirstName = $('#FirstName').val();
                    $.ajax({        
                    type: "POST",
                    url: '@Url.Action("Submit", "Home")',
                    dataType: "JSon",
                    data: { "FirstName": FirstName},
                    success: function (data) {
                        console.log(data);
                        $("#SecondInfo").focus();
                    },
                    error: console.log("it did not work"),
                });
            });
            </script>
    

    【讨论】:

    • 感谢您的回复,+1 的回答。focus 对我不起作用...知道可能的原因是什么???
    【解决方案3】:

    好吧,让我假设你有 4 个 divs 并且每个都有一个 input 元素,如下所示,第一个将有 active 类,其余的将被隐藏:

    <div id="parentStep">
        <div id="div1" class="steps active">
             <input type="text" id="firstName"/>
        </div>
        <div id="div2" class="steps">
             <input type="text" id="lastName"/>
        </div>
        <div id="div3" class="steps">
             <input type="text" id="contacNum"/>
        </div>
        <div id="div4" class="steps">
             <input type="text" id="addressDetail"/>
        </div>
    </div>
    

    现在在success 上的ajax 中,只需尝试找到具有活动类的divhide 它和show div,如下所示:

    $("#btnSubmit").click(function () {
          var activeDiv=$("#parentStep").find('.steps .active');//get the active div
          var dataToSend=activeDiv.find('input').val();//get the input value of active div
          $.ajax({        
                   type: "POST",
                   url: '@Url.Action("Submit", "Home")',
                   dataType: "JSon",
                   data: { "Data": dataToSend},
                   success: function (data) {
                         activeDiv.fadeOut("slow").removeClass('active');//remove active from current step
                         activeDiv.next().fadeIn('fast').addClass('active');//get the next div visible and add active class
                   },
                   error: function(data){
                     console.log("it did not work"),
                   }
           });
    });
    

    【讨论】:

    • 很酷,它使用隐藏和显示,但我认为这不是滚动的。
    • @viyancs 它使用hideshow 这就是为什么不需要滚动!!希望你明白我的意思!
    • @GuruprasadRao 我很感激你的努力,这个答案不适合我的视图代码......虽然它对这个案例的出色解决......干杯
    • 不是@SuhailMumtazAwan。快乐编码.. :)
    猜你喜欢
    • 1970-01-01
    • 2013-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    相关资源
    最近更新 更多