4

jquery-steps プラグインをテストしています。[次へ]または[へ] ボタン (下部)クリックし、ウィンドウの上部がステップの div の上部より下にある場合 (つまり、これは、ブラウザー ウィンドウの高さが短すぎる場合に発生します) )、スクロールが本体上部にジャンプします。

どうやらこれを防ぐ方法はないようで、プラグインコードの編集など、あらゆることを試しました。私ができる唯一のことは、onStepChangingイベントにいくつかのコードを追加して、別のスクロール位置を設定することでした:

$("#steps-container").steps({
        /* ... */
        onStepChanging: function(event, currentIndex, priorIndex)
        {
            var top = 300;
            var pos = $(window).scrollTop();
            if (pos > top + 48)
            {
                $('body').scrollTop(top);
            }
            return true;
        },
        labels:
        {
            /* ... */
        },
        onFinishing: function (event, currentIndex) { submitOrderForm(); return true; }
    });

誰かがこれを整理するのを手伝ってくれますか? ありがとう!

4

3 に答える 3

5

幸いなことに、私は解決策を見つけたと思います。

残念ながら、開発者はこのためのオプションを提供していないか、オーバーライドのためにこの関数を公開していないため、プラグインの独自の編集バージョンを作成する必要があります。

関数refreshStepNavigation内で、次のコードをコメント アウトするか削除します (縮小されていないバージョンの 870 行目:

currentOrNewStepAnchor.focus();

スクロール位置を変更したり、ソース内の要素の上部オフセットを見つけたりすることとは何の関係もありませんでした。これを簡単なjsfiddleで試してみたところ、うまくいくようでした...

于 2014-09-12T09:39:26.030 に答える
2

そのため、jQuery Validate プラグインなどの検証も使用しているときに、これに遭遇した場合は、状況によってはコメント アウトするか、別の行を削除する必要があります。

私の場合、フォームの検証が失敗した場合、ステップは同じままで、ブラウザ ビューが一番上に表示されます。この動作を削除するには、1273 行目をコメントアウトまたは削除します (こちらを参照)。

getStepAnchor(wizard, oldIndex).focus();
于 2015-07-14T08:36:13.903 に答える