Нужна инструкция для начинающих с сортировкой и сериализацией - PullRequest
0 голосов
/ 04 октября 2011

Везде можно найти примеры того, как сделать список сортируемым.Но тогда мне нужно опубликовать новый заказ на другой странице. Я должен наблюдать за чем-то глупым, но после того, как прошло 3 дня, у меня все еще нет решения.У меня есть запрос вывода

Затем код jquery
    <script>
    $(function() {
        $( "#ulsortable" ).sortable();

    });
        $('#frm-sort').submit(function(){
            var sort_serialized = $("#ulsortable").sortable("serialize");
        });
    </script>

    <form action="#request.site.webroot#/actions/act_writeneworder.cfm" method="post" id="frm-sort">
  <input type="submit" name="save" id="save" value="save" />
  <input type="hidden" name="sort_serialized" id="sort_serialized" value="" />
</form>

Переменная sort_serialized, однако, дает пустую строку.Это мой первый опыт работы с jQuery.Любая помощь будет принята с благодарностью.Бьянка

Ответы [ 2 ]

0 голосов
/ 04 октября 2011

Вы устанавливаете переменную = для serailization, но не фактическое скрытое поле, что произойдет, если вы установите значение скрытого поля, используя

$("#sort_serialized").val($("#ulsortable").sortable("serialize").toString()); 

также здесь есть вопрос, в котором содержится дополнительная информация о публикации сериализованного списка на другой странице, которая может быть полезной.

jQuery: что делать со списком, который возвращает сортируемый ('serialize')?

------------------ Вот пример для вас, который работает --------------------- ------

Вы должны быть в состоянии опубликовать это на html-странице, настроить свои ссылки на скрипты и стили в голове, и это будет работать. Когда вы нажимаете кнопку, он помещает сериализованный список в текстовое поле. Например, после перемещения пары предметов, я получаю результат

Пункт [] = 1 & Пункт [] = 4 & Пункт [] = 2 & Пункт [] = 3

Вот код.

<html xmlns="http://www.w3.org/1999/xhtml" >
 <head>
     <title>Sample Sort and Serialize</title>
<link href="Content/Css/jquery-ui-1.8.13.custom.css" rel="stylesheet" type="text/css" />
<script src="Content/Scripts/jquery-1.6.min.js" type="text/javascript"></script>
     <script src="Content/Scripts/jquery-ui-1.8.13.custom.min.js" type="text/javascript"></script>
 </head>
 <body>
     <form>
     <script language="javascript">
         $(function() {
             $("#ulSortable").sortable();
             $("#ulSortable li").addClass("ui-widget-header");

             $('#btnSort').click(function() {
                 $("#sort_serialized").val($("#ulSortable").sortable("serialize").toString());
        });
    });
   </script> 
   <style>
         #ulSortable { list-style-type: none; margin: 0; padding: 0; width: 60%; }
         #ulSortable li { margin: 0 3px 3px 3px; padding: 0.4em; padding-left: 1.5em; font-size: 1.4em; height: 18px; cursor: pointer;}
         #ulSortable li span { position: absolute; margin-left: -1.3em; }
   </style>

     <ul id="ulSortable">
         <li id="Item_1">Item 1 Content</li>
         <li id="Item_2">Item 2 Content</li>
         <li id="Item_3">Item 3 Content</li>
         <li id="Item_4">Item 4 Content</li>
     </ul>
     <br /><br />           

     <input type="text" id="sort_serialized" size="50"/>
     <input type="button" id="btnSort" value="Sort List" />

</form>
 </body>
 </html>
0 голосов
/ 04 октября 2011

Согласно документации для сериализации :

Сериализует идентификаторы сортируемых элементов в форму / ajax отправляемую строку. Вызов этого метода создает хеш, который можно добавить к любому URL, чтобы легко отправить новый заказ на сервер.

Он работает по умолчанию, просматривая идентификатор каждого элемента в формате 'setname_number', и выдает хеш вроде "setname [] = number & setname [] = number".

В качестве второго аргумента вы также можете указать хэш опции, чтобы определить, как работает функция. Возможные варианты: «ключ» (заменяет part1 [] тем, что вы хотите), «атрибут» (проверка другого атрибута, кроме «id») и «выражение» (используйте свое собственное регулярное выражение).

Если serialize возвращает пустую строку, убедитесь, что атрибуты id содержат подчеркивание. Они должны быть в форме: "set_number". Например, список из 3 элементов с атрибутами id foo_1, foo_5, foo_2 будет сериализован в foo [] = 1 & foo [] = 5 & foo [] = 2. Вы можете использовать подчеркивание, знак равенства или дефис для разделения набора и числа. Например, foo = 1 или foo-1 или foo_1 все сериализуются в foo [] = 1.

Есть ли у вас id атрибуты в ваших элементах списка?

Вы убедились, что все они содержат подчеркивание и имеют правильную форму?

...