1

我有一个 HTML 列表,我想让用户能够通过拖放重新排序,然后将他们的更改提交到数据库。

我对所有数据库的东西都很满意,但我在 Javascript/JQuery 上苦苦挣扎。

我目前的 jQuery UI Sortable工作正常(所以其他元素并通过拖放重新排序元素),但我不知道如何获取 SUBMIT 的新订单。

任何人都可以帮忙吗?如果您需要更多信息,请直接说。谢谢!

4

3 回答 3

6

例如,通过 AJAX 调用将该数据发送到您的应用程序

$('#TabContainer').tabs();
$('#TabContainer .ui-tabs-nav').sortable({
    axis: 'x',
    update: function(event, ui){
        var data = $('#TabContainer .ui-tabs-nav').sortable('serialize');
        $.ajax({
            url: '/events/update-tab-order',
            data: data,
            type: 'POST',
            mode: 'abort'
        });
    }
});

唯一棘手的部分是您必须在列表项上指定一个 ID,格式为groupname_identifier. 例如:

<div id="TabContainer">
    <ul>
        <li id="MyTabs_123"><a href="#tab0">Tab 1</a></li>
        <li id="MyTabs_124"><a href="#tab1">Tab 2</a></li>
        ...etc
    </ul>
    ...tab content goes here
</div>

然后,当您的应用程序接收到 POST 数据时,它将是一个如下所示的数组:

$_POST['MyTabs']

array(
    0 => '123',
    1 => '124'
)
于 2012-05-24T12:22:14.780 回答
1

看看@serialize(),我做了同样的事情,没有显式提交按钮,而是直接使用mootools通过ajax注入订单。

<script language="javascript">
            <!--
            window.addEvent('domready', function() {
                var thisSortables = new Sortables($('list'), {
                    constrain: true,
                    clone: true,
                    revert: true,
                    onStart: function() {
                        $('confirm').set('html', '');
                    },
                    onComplete: function() {
                        this.serialize(function(el, index) {
                            var updateOrderRequest = new Request.HTML({
                                url: '../module/tools/admgn/dbsorter.php',
                                method: 'post',
                                data: {'itemID': el.id.replace("item_",""), 'new_pos':(index+1)}
                            }).send();
                        });
                        $('confirm').set('html', 'Reihenfolge erfolgreich gespeichert.');
                    }
                });
            });
            -->
        </script>

也许你明白如何让它发挥作用。

于 2012-05-24T12:22:21.843 回答
1

由于<UL>and<OL>不是表单元素,你无法通过 post 方法,我希望你能做到这一点

http://quasipartikel.at/multiselect_next/

选择所有选项并将可用部分隐藏为隐藏

于 2012-05-24T12:30:16.723 回答