我该如何解决浏览器和前进按钮的问题

问题描述 投票:0回答:2

我已为工作的浏览器的前进和后退按钮添加了此代码,同时具有我的表单继续和上一个按钮。第一步和第二步工作正常,但是当我们从第三步返回到第二步时,动画将反向运行,但是何时从第二步回到第一动画将按预期工作。谢谢!

var state = {};
$(document).ready(function () {

    history.pushState({
        step: 1,
    }, null, "");


    function my_next1_2() {
        var pgrbar = 2 * 5.56;
        $('#step-1').css('display', 'none');
        $('#step-2').css('display', 'block');
        $('.progress-bar').width(pgrbar + '%');
        $('#step-2').removeClass("slideInLeft").addClass("slideInRight");
        $('html, body').animate({
            scrollTop: $('.app-container').offset().top
        }, 100);
    }

    $('.next1_2').click(function () {
        my_next1_2();
        history.pushState({
            step: 2,
        }, null, "");
    });


    function my_next2_3() {
        var pgrbar = 3 * 5.56;
        $('#step-2').css('display', 'none');
        $('#step-3').css('display', 'block');
        $('.progress-bar').width(pgrbar + '%');
        $('#step-3').removeClass("slideInLeft").addClass("slideInRight");
        $('html, body').animate({
            scrollTop: $('.app-container').offset().top
        }, 100);
    }

    $('.next2_3').click(function () {
        my_next2_3();
        history.pushState({
            step: 3,
        }, null, "");
    });



    function my_prev2_1() {
        var pgrbar = 1 * 5.56;
        $('#step-2').css('display', 'none');
        $('#step-1').css('display', 'block');
        $('.progress-bar').width(pgrbar + '%');
        $('#step-1').removeClass("slideInRight").addClass("slideInLeft");
        $('html, body').animate({
            scrollTop: $('.app-container').offset().top
        }, 100);

    }

    $('.prev2_1').click(function () {
        my_prev2_1();
        history.back();
    });

    function my_prev3_2() {
        var pgrbar = 2 * 5.56;
        $('#step-3').css('display', 'none');
        $('#step-2').css('display', 'block');
        $('.progress-bar').width(pgrbar + '%');
        $('#step-2').removeClass("slideInRight").addClass("slideInLeft");
        $('html, body').animate({
            scrollTop: $('.app-container').offset().top
        }, 100);

    }

    $('.prev3_2').click(function () {

        my_prev3_2();
        history.back();
    });


    window.onpopstate = function (event) {
        if (event.state.step === 1) {
            my_prev2_1();
        }

        if (event.state.step === 2) {
            my_next1_2();
            my_next3_2();
        }
        if (event.state.step === 3) {

            my_next2_3();
        }
    };
});
javascript jquery ajax api history
2个回答
0
投票

我希望可以添加评论,但我需要50点声望。您的HTML在哪里?或向我们展示jsfiddle示例很好。


0
投票

感谢您的友善回应,这是我的HTML,共有18个步骤,就像这个步骤一样

            <!-- Step 1 -->
            <div id="step-1" class="p-5 lg animated">
                <div class="app-inner">
                    <h3 class="mb-5">What Vehicle Would You Like?</h3>
                    <div class="app-row lg">
                        <div class="app-list-wrap">
                            <div class="app-list-wrap-inner">
                                <div class="app-list cols3">
                                    <div data-step="1" class="custom-box custom-box-clicked">
                                        <input name="vehicle" value="Car" type="checkbox" id="car" checked>
                                        <label class="checkbox-label" for="car">
                                            <img src="images/car-1.jpg" alt="Car">

                                            <div class="img-title">Car</div>
                                        </label>
                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="1" class="custom-box">
                                        <input name="vehicle" value="Suv" type="checkbox" id="bus">
                                        <label class="checkbox-label" for="bus">
                                            <img src="images/van-1.jpg" alt="Sub">
                                            <div class="img-title">SUV</div>
                                        </label>
                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="1" class="custom-box">
                                        <input name="vehicle" value="Motorbike" type="checkbox" id="bike">
                                        <label class="checkbox-label" for="bike">
                                            <img src="images/bike-1.jpg" alt="Bike">

                                            <div class="img-title">Motorbike</div>
                                        </label>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="app-btn-wrap">
                    <button data-step="2" type="button" class="next app-btn next1_2">Continue</button>
                </div>
                <div class="button-btm-text">
                    Don’t worry, you can change your mind about the kind of vehicle you want at any time.
                </div>
            </div>

            <!-- Step 2 -->
            <div id="step-2" class="p-5 md animated" style="display: none;">
                <div class="app-inner">
                    <h3 class="mb-5">What Is Your Monthly Budget?</h3>

                    <div class="app-row md">

                        <div class="app-list-wrap-inner">
                            <div class="app-list cols2">
                                <div data-step="2" class="custom-box custom-box-clicked" data-value="Under £150/month">
                                    <div class="radio-toolbar">
                                        <input type="radio" id="budget1" name="budget" value="Under £150/month" checked>
                                        <label for="budget1">Under £150/month</label>
                                    </div>
                                </div>
                            </div>
                            <div class="app-list cols2">
                                <div data-step="2" class="custom-box" data-value="Under £150 - £250/month">
                                    <div class="radio-toolbar">
                                        <input class='radio' type="radio" id="budget2" name="budget" value="Under £150 - £250/month">
                                        <label for="budget2">Under £150 - £250/month</label>
                                    </div>
                                </div>
                            </div>
                            <div class="app-list cols2">
                                <div data-step="2" class="custom-box" data-value="Under £251 - £350/month">
                                    <div class="radio-toolbar">
                                        <input class='radio' type="radio" id="budget3" name="budget" value="Under £251 - £350/month">
                                        <label for="budget3">Under £251 - £350/month</label>
                                    </div>
                                </div>
                            </div>
                            <div class="app-list cols2">
                                <div data-step="2" class="custom-box" data-value="Over £350/month">
                                    <div class="radio-toolbar">
                                        <input class='radio' type="radio" id="budget4" name="budget" value="Over £350/month">
                                        <label for="budget4">Over £350/month</label>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>

                </div>
                <div class="app-btn-wrap">
                    <button data-step="1" type="button" class="prev app-btn prev2_1">Previous</button>
                    <button data-step="3" type="button" class="next app-btn next2_3" id="p_pusher2_3">Continue</button>
                </div>
                <div class="button-btm-text">
                    Your desired monthly budget can help us better determine an appropriate loan program for you
                </div>
            </div>


            <!-- Step 3 -->
            <div id="step-3" class="p-5 animated slideInRight" style="display: none;">
                <div class="app-inner">
                    <h3 class="mb-5">Are You Currently Driving a Vehicle?</h3>
                    <div class="app-row">
                        <div class="app-list-wrap">
                            <div class="app-list-wrap-inner">
                                <div class="app-list cols3">
                                    <div data-step="3" class="custom-box custom-box-clicked" data-value="No">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="driveVehicle1" name="driveVehicle" value="No" checked>
                                            <label for="driveVehicle1">No</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="3" class="custom-box" data-value="Yes, I want to keep it">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="driveVehicle2" name="driveVehicle" value=" Yes, I want to keep it">
                                            <label for="driveVehicle2"> Yes, I want to keep it</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="3" class="custom-box" data-value="Yes, I want to trade it in">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="driveVehicle3" name="driveVehicle" value=" Yes, I want to trade it in">
                                            <label for="driveVehicle3"> Yes, I want to trade it in</label>
                                        </div>

                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>

                <div class="app-btn-wrap">
                    <button data-step="2" type="button" class="prev app-btn prev3_2" id="p_pusher3_2">Previous</button>
                    <button data-step="4" type="button" class="next app-btn next3_4">Continue</button>
                </div>
                <div class="button-btm-text">
                    We can get you pre-approved with or without a trade in.
                </div>
            </div>


            <!-- Step 4 -->
            <div id="step-4" class="p-5 animated slideInRight" style="display: none;">
                <div class="app-inner">
                    <h3 class="mb-5">What Is Your Estimated Credit Rating?</h3>
                    <div class="app-row">
                        <div class="app-list-wrap">
                            <div class="app-list-wrap-inner">
                                <div class="app-list cols3">
                                    <div data-step="4" class="custom-box custom-box-clicked" data-value="Good">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="rating1" name="creditRating" value="Good" checked>
                                            <label for="rating1">Good</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="4" class="custom-box" data-value="Fair">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="rating2" name="creditRating" value="Fair">
                                            <label for="rating2">Fair</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="4" class="custom-box" data-value="Poor">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="rating3" name="creditRating" value="Poor">
                                            <label for="rating3">Poor</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="4" class="custom-box" data-value="Very Poor">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="rating4" name="creditRating" value="Very Poor">
                                            <label for="rating4">Very Poor</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="4" class="custom-box" data-value="Current Bankcruptcy">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="rating5" name="creditRating" value="Current Bankcruptcy">
                                            <label for="rating5">Current Bankcruptcy</label>
                                        </div>

                                    </div>
                                </div>
                                <div class="app-list cols3">
                                    <div data-step="4" class="custom-box" data-value="No Credit">
                                        <div class="radio-toolbar">
                                            <input type="radio" id="rating6" name="creditRating" value="No Credit">
                                            <label for="rating6">No Credit</label>
                                        </div>

                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="app-btn-wrap">
                    <button data-step="3" type="button" class="prev app-btn prev4_3">Previous</button>
                    <button data-step="5" type="button" class="app-btn next4_5">Continue</button>
                </div>
                <div class="button-btm-text">
                    Your estimated credit rating helps us determined the appropriate loan program for you.
                </div>
            </div>
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.