[jquery] ui 라이브러리에서 소트하는 기능(sortable) > javascript
javascript

[jquery] ui 라이브러리에서 소트하는 기능(sortable)

조회 2,196회 댓글 0건
  • 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기

아작스로 서버에 전송하는 기능까지 테스트 된것입니다.

jQuery 버전에 따라서 ajax 전송하는 방식이 약간 다른 부분이 있으니 버전 참고하세요.

본인이 현재 사용하는것과 여기 샘플의 버전이 비슷하면 문제가 되지 않을듯 싶습니다.


<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>jQuery UI Sortable - 아작스 전송하기</title>
</head>
<style>
  #sortable {
    margin: 0;
    padding: 0;
    list-style-type: none;
    width: 500px
   }
  #sortable li {
    margin: 0 0.3em 0.3em 0;
    padding: 5px 5px 5px 5px;
    border: 1px black solid;
    text-align: center;
    float: left;
    width: 110px;
    cursor: hand;
  }
</style>
<body>

  <ul id="sortable">
    <li data-keyn="11" class="ui-state-default">1</li>
    <li data-keyn="12" class="ui-state-default">2</li>
    <li data-keyn="3" class="ui-state-default">3</li>
    <li data-keyn="4" class="ui-state-default">4</li>
    <li data-keyn="21" class="ui-state-default">11</li>
    <li data-keyn="22" class="ui-state-default">12</li>
  </ul>
  <input type='button' value='sortable btn' onclick='sort_data_send()'/>

<script>
$(document).ready(function()
{
  // $( function() {
  //   $( "#sortable" ).sortable();
  //   $( "#sortable" ).disableSelection();
  // } );

  $(document).ready(function () {
    $('#sortable').sortable({
        cursor      : "move",
        // 드래그 앤 드롭 단위 css 선택자
        // connectWith: ".column",
        // 움직이는 css 선택자
        // handle: ".card-header",
        // 움직이지 못하는 css 선택자
        // cancel: ".no-move",
        // 이동하려는 location에 추가 되는 클래스
        // placeholder: "card-placeholder",
        // 요소를 잡는 순간 실행
        start : function(event, ui){
          // $(this).css('background-color', 'rgb(213,222,232)');
          console.log('시작 -- ');
        },
        // 모든 이동이 끝난 후에 마지막으로 실행
        stop : function(event, ui){
          // $(this).css('background-color', 'transparent');
          console.log('끄으읃 ~~');
        }
    });
    $( "#sortable" ).disableSelection();
  });


  function sort_data_send()
  {
    let aDataList   = [];

    // listNum 0 부터 시작 한다.
    $("#sortable li").each(function( listNum ) {
      let data_keyn   = $(this).attr('data-keyn');
      aDataList.push(data_keyn);
      // console.log('listNum: ', listNum);
      // console.log('aDataList', aDataList);

    });
    let dataList    = aDataList.join(',');
    // console.log('dataList', dataList);

    // send
    let form      = new FormData();
    form.append( "dataList", dataList );
    form.append( "mode", "image");
    jQuery.ajax({
        url         : "/www/tt.php"
      , type        : "POST"
      , processData : false
      , contentType : false
      , data        : form
      , success     : function(response) {
        console.log(response);
      }
      ,error        : function(jqXHR) {
        console.log(jqXHR.responseText);
      }
    });
  }
  sort_data_send();

});
</script>

</body>
</html>

 


서버에서 받아지면 확인용은 아래 처럼 합니다.

실제는 디비처리 등을 하겠죠. 아래는 테스트 할때 확인 용 입니다.



  if ( $_POST )
  {
    // echo '<pre>' . print_r($_POST, true) . '</pre>';

    echo json_encode($_POST, JSON_UNESCAPED_UNICODE);
    exit;
  }
 



 

data-keyn 속성으로 된 부분의 값이 서버로 전송이 됩니다.

그리고 formData 만들어 주는 부분이 있는데 이곳에 본인이 필요한 파라미터를 넣어 주면 됩니다.


본인의 상황에 맞게 수정해 사용하시면 됩니다.

예를 들면 무조건 페이지 읽히면서 sort_data_send(); 실행 하게 되어 있는데. 단순 확인 용입니다. 버튼 클릭하기 전에 보려고~


● 참고한 곳

https://velog.io/@cyhse7/%EB%81%8C%EC%96%B4%EB%8B%A4-%EB%86%93%EA%B8%B0-Jquery%EC%9D%98-.sortable-%EC%82%AC%EC%9A%A9

https://api.jqueryui.com/sortable/





  • 페이지 주소 복사
  • 페이스북으로 공유
  • X 로  공유
  • 트위터로  공유
  • 네이버 블로그로 공유
  • 네이버 카페 공유하기
  • 네이버 라인 공유하기
  • 네이버 밴드 공유하기
  • 링크드인으로 공유하기
  • 핀터레스트에 공유하기
전체 99건 1 페이지
  • profile_image 보통 마우스의 휠은 세로 스크롤을 작동시키는데 사용하는데요.이번에 테스트로 만든 페이지의 가로의 양이 상당해서 아래쪽에 가로스크롤을 마우스로 움직이는데 상당히 거슬려서 만들어 보게 된것입니다. ▶ JavaScript에서 wheel 이벤트 감지  - event.deltaY 값(세로 스크롤)을 감지하여 가로 스크롤(scrollLeft)을 이동  - event.preventDefault();로 기본 세로 스크롤 방지    <!DOCTYPE html>    <html>    <head>    &nb…
  • profile_image 자바와 자바스크립트는 직접적인 관계는 없습니다. 다만 문법이 C계열인 정도 인데 의미는 없습니다.의미가 없다는 의미는 자바스크립트 할줄 하는 개발자가 자바를 다르지 못하고 반대도 그렇다고 봐야 합니다.* 이런 생각도 가능!!  - 스크립트(SCRIPT) 비교적(프로그램에 비해) 간단한 형태를 말함  - JAVA + SCRIPT = 자바로 만들어진 스크립트?그런데 같은 줄 아는 사람이 있는 경우는 왜? 그런가사람이 모르는 것을 접할 때 기본적으로 생각하는 방향에 따라 생각 하는 것일 뿐입니다.즉, 사람들이 Java와 JavaScript를 같은 것으로 오해하는 이유는 주로 인지적 작용과 언어적 연상에서 기…
  • profile_image 중복된 처리를 제외하고자 할때 일정 부분 쿠키로 가지고 있다가 비교해서 동일한 것은 처리 하지 않기 위한것입니다.이것을 쿠키를 이용하는 방법이 있고 요즘은 로컬스토리지를 이용하는 방법도 있겠습니다. 특정 게시물의 번호나. 방문자의 로그를 저장하여 처리 하는 경우는 중복 처리 방지를 위한 간단한 방식 입니다.게시물의 경우 중복제외 처리를 하지 않으면 들쑥 날쑥 하지만 최고 30% 넘게 차이나는 경우도 있었습니다.  <!DOCTYPE html>  <html>  <head>      <title>Click Eve…
  • profile_image 블로그에 있는 datepicker는  안되는것이 많아서 사용할 일이 있어서 완성한것 올립니다.jquery는 버전이 다르면 안될 수 있으니 버전을 맞우는것이 중요하며 아래 순서도 중요합니다.jquery를 이용하기 때문에 jquery-ui가 아래에 있어야 한다는 것입니다. 그리고 jquery-ui 압축 파일을 받으면 아래와 같이 CDN 이용하지 않고 사이트에 올려 놓고 사용할 수 있으며 압축 파일 안에 아래 cdn 링크 걸린 모든 파일과 더불어 필요한 다른 파일들도 같이 모두 들어 있습니다. 같이 사용되는 jquery 도 별도 디렉토리에 있습니다.△ 아래 달력 datepicker(데이트티커)minDate …
  • profile_image Node Express는 Node.js와 Express.js를 결합하여 웹 애플리케이션 개발에 사용되는 프레임워크입니다. 이를 통해 비동기적인 서버 측 코드 작성과 HTTP 요청 및 응답 처리 등 다양한 웹 개발 작업을 보다 쉽게 처리할 수 있습니다.  1) 간단하게 띄울 프로그램을 하나 준비 서버가 잘 작동하는지 확인을 할 수 있는 간단한 프로그램을 준비 하도록 합니다.자신이 하는것이 디비커넥션이 들어가게 되면 이 부분도 간단하게 CRUD 프로그램 하나 준비 하면 됩니다.  const express = require('express');  const app    …
  • profile_image -g 옵션을 주어 글로벌로 설치한것이 아닌데 현재 디렉토리에 node_modules이 없고 다른곳에 설치 된경우는 아래처럼 초기화하면 package.json 파일이 생성 되고 현재 디렉토리에 node_modules 디렉토리가 생기면서 설치 됩니다. 아래와 같이 초기화 후 설치 하면 됩니다.  npm init -y  npm install express 그리고 초기화 했는데 안되는 경우는 시스템 로그인할때 홈 디렉토리나 또는 기본적으로 있어야할 스크립트 등이 없는 경우는 아닌지 살펴 보면 됩니다.예를 들면 bash shell의 경우 로그인 하면서 실행 되는 스크립트 들이 있습니다. 파일명…
  • profile_image 실제 파일은 있는데 없는다는 메시지가 나올 경우는 PATH 설정 값을 확인해 봐야 합니다.만약 whereis env 했는데 있다면 로그인할 때 실행되는 파일에 PATH 설정을 추가해 주면 됩니다./usr/local/nodejs/bin/npm install yarn/usr/bin/env: node: 그런 파일이나 디렉터리가 없습니다위와 같은 오류가 발생 하는 경우는 경로를 추가해 주면 된다.vim /etc/bashrcexport PATH=$PATH:/usr/local/nodejs/bin이 경우는 nodejs를 압축파일을 받아서 별도의 디렉토리에 압축을 풀고 심복릴 링크 처리한 경우 입니다.

상업적 이용 금지. 컨텐츠는 개인 용도로만 사용이 가능 합니다.