0

複数のフィールドセットを持つ Dexterity タイプと、追加または編集時に一度に 1 つのフィールドセットを表示できる組み込みの Javascript があります。

しかし、ユーザーにフィールドセットを順番に見てもらいたいので、最後のフィールドセットが表示されるまで「送信」ボタンを表示せず、最後のフィールドセットまでNEXT>またはボタン<PREVを表示するのが理想的な状況NEXT>です。

これは振る舞いだと思いますか?しかし、それをどのように追加し、どのように制御するかについて、私は少し途方に暮れています。私は現在、デフォルトの EditForm を使用しており、少し微調整したいだけですが、自分でフォームを作成することを意味する場合は、それで問題ありません。それがこの追加を取得する唯一の方法であるかどうかを知る必要があるだけですが、それはありそうにないようです.

4

1 に答える 1

1

フィールドセットは、追加の JavaScript マジックを使用して「前へ」および「次へ」ボタンを追加するように調整できます。現在のプロジェクトで使用しているものは次のとおりです。

var prevnext = {
    formTabs: null,

    next: function() { prevnext.formTabs.data('tabs').next(); prevnext._scrollToTop(); },
    prev: function() { prevnext.formTabs.data('tabs').prev(); prevnext._scrollToTop(); },

    _scrollToTop: function() {
        $(window).scrollTop(prevnext.formTabs.closest('form').offset().top);  
    },

    showButtons: function(event, index) {
        var tabs = prevnext.formTabs.data('tabs'),
            index = typeof(index) === 'undefined' ? tabs.getIndex() : index,
            current = tabs.getTabs()[index],
            count = tabs.getTabs().length;

        $('#prevnext_previous').toggle(index !== 0);
        $('#prevnext_next').toggle(index !== (count - 1));

        $('.formControls:last :submit[name=form_submit]').toggle(index === )count - 1));
    },

    init: function() {
        var tabs;
        prevnext.formTabs = $('.formTabs');
        tabs = prevnext.formTabs.data('tabs');
        if (tabs.getTabs().length > 0) {
            if ($('fieldset#fieldset-distribution').length === 0)
                 return;
            $('.formControls:last :submit:first')
                .before($('<input id="prevnext_previous" class="context" ' +
                          '       type="button" value="" />')
                      .val('< Previous')
                      .click(prevnext.prev))
                .before(document.createTextNode(' '));
            $('.formControls:last :submit:first')
                .before($('<input id="prevnext_next" class="context" ' +
                          '       type="button" value="" />')
                      .val('Next >')
                      .click(prevnext.next))
                .before(document.createTextNode(' '));
            prevnext.showButtons();
            tabs.onClick(prevnext.showButtons);
        }
    }
};

$(prevnext.init());
于 2012-11-03T07:55:53.150 に答える