2012-04-24 2 views
1

데이터베이스 항목 목록을 정렬 한 다음 Joomla에서 새 순서로 데이터베이스를 업데이트하려고합니다.Sortable의 순서를 캡처하는 Joomla/Mootools

지금까지 mootools를 가지고 있습니다 Sortables 모든 <li>에는 두 개의 ID가 숨겨진 <input>이 있으며 항목의 ID와 순서를 추적합니다. 현재 order 변수는 변경되지 않고 원래 순서를 반영합니다.

나는 내가 가진

...하지만 내가 어떻게이 일을 아무 생각에 요청을 전송 한 후 이벤트를 제출하고 그들이 지금해야 무엇을 주문 변수를 변경하고 캡처 기대했다 :

<li style="float:left"> 
    <input type="hidden" name="o<?php echo $row->order; ?>" value="<?php echo $i; ?>" /> 
    <input type="hidden" name="i<?php echo $row->order; ?>" value="<?php echo $row->lotid; ?>" /> 
    Lot <?php echo $row->lot_name; ?><br /> 
    <?php echo $row->address; ?> 
</li> 

그리고는 :

window.addEvent('domready', function(){ 
    new Sortables('#order-grid', {opacity: 0.7}); 

    form = document.id('adminForm'); 
    list = document.id('order-grid'); 

    form.addEvent('submit', function(e) { 
     var sortOrder = []; 

     list.getElements('li').each(function(li) { 
      sortOrder.push(li.retrieve... //Stuck! 
     }); 
    }); 
}); 

어떤 도움에 감사드립니다.

답변

2

doc 페이지는 친구입니다. http://mootools.net/docs/more/Drag/Sortables

먼저 참조를 저장한다고 말하고 싶습니다.

var sortables = new Sortables(options) 

는 새 질서를 검색 할 sortables.serialize() 방법을 사용할 수 있습니다. 기본적으로 직렬화는 요소 ids를 반환하지만 함수 인 인수를 취하므로 원하는대로 반환 할 수 있습니다.

예 : 새로운 정렬 순서의 배열을 얻기 위해, 단순히

var newOrder = sortables.serialize(function(el, index) { 
    return el.get('data-id'); // or el.retrieve('id'); if you have one. 
}); 

마지막으로, 필요 제출 이벤트를하지 않는다하기 위해 할 - 당신은 단지 같은 것을 수행 할 수 있습니다

var orderField = document.id("i_something_order"); 
new Sortables('#order-grid', { 
    onComplete: function() { 
     orderField.set('value', this.serialize(function(el) { 
      el.retrieve('id'); 
     }).join(',')); 
    } 
}); 

retrieve 당신을 의미하는 것으로를 미리 store을 사용했습니다. DOM 속성 인 경우 나중에 el.get('data-id') 또는 제안 된대로 수행하십시오.

+0

답장을 보내 주셔서 감사합니다. 입력 한 내용의 이름과 값은 어떻게됩니까? 그것이 내 주요 문제이므로, 그 값을 변경할 수 있습니다. – BeaverusIV

+0

감사합니다. 입력을 반복하고 명령을 다시 설정하는 onComplete 함수가 추가되었습니다. 공장. 내가 그 남자를 읽었다는 언급. – BeaverusIV

관련 문제