2010-05-28 4 views
3

Я пытаюсь найти правильное регулярное выражение для соответствия идентификаторам элемента списка.jquery sortable with regexp

Например:

<ul id="MyList" class="connectedSortable"> 
    <li id="id=1-32">Item 1</li> 
    <li id="id=2_23">Item 2</li> 
    <li id="id=3">Item 3</li> 
    <li id="id=4">Item 4</li> 
    <li id="id=5">Item 5</li> 
    <li id="id=6">Item 6</li> 
</ul> 

О методе сериализации, я хочу, чтобы вытащить все после знака равенства (=). Например, для первого элемента мне нужен идентификатор 1-32, для второго мне нужно, чтобы он был 2_23.

$(function() { 
     $("#MyList, #OtherList").sortable({ 
      connectWith: '.connectedSortable', 
      update: function() { 
       $("#MyListOrder").val($("#MyList").sortable('serialize', { regexp: '/(.+)[=](.+)/)' })); 
      } 
     }).disableSelection(); 
    }); 

Я пробовал выше, но это не совсем сработало. Мое выражение регулярного выражения неверно, и я не знаю, каким он должен быть. Идеи?

UDPATE: Вместо использования метода сериализации я решил использовать toArray. Таким образом, я получаю весь ID и могу вырвать часть, на которой я не хочу сервер.

ответ

4

Согласно спецификации, параметр должен быть назван «выражением», и вам не нужен /.../ в строке, если вы не передадите регулярное выражение. Это работает:

.sortable('serialize', { expression: '(.+)=(.+)' }) 

или:

.sortable('serialize', { expression: /(.+)=(.+)/ }) 

Рабочий пример: http://jsbin.com/oqejo3/2

+0

не совсем работа, я думаю, JQuery еще завинчивания с выходом. exa: id = 1 [] = 32 & id [] = 4 & id = 2 [] = 23 & id [] = 3 & id [] = 5 & id [] = 6 Спасибо в любом случае, решил просто использовать toArray. – NotMe

+0

@Chris Lively - Смотрите обновленную версию, я думаю, что она решает вашу проблему. После того, как я отправил ответ, я пошел дальше и протестировал его, он не работал с пользовательским интерфейсом jQuery. – Kobi

+0

Это прекрасно. Благодаря, – NotMe