기본 콘텐츠로 건너뛰기

Lecture 77 - jQuery(4) jQueryUI 설치법 및 기초 사용법

Lecture 77 - jQuery(4) jQueryUI 설치법 및 기초 사용법

베니지오 IT 월드

갬성개발러 Bennyziio 2019. 7. 15. 13:33

//20180904 frontend engine(gui) - javascript -jQuery - jQueryUI - Bootstrap -> 발전 *ECMAScript 6 / 7 -> mvc - angular => pc / mobile -> jquery Mobile -> react -> vue * 데이터 시각화 D3 d3js.org backend engine - spring, MyBatis - 지속적으로 발전중 www.jqueryui.com pc - jquery ui mobile - jquery mobile (*) - egovframe getbootstrap.com 반응성웹(pc, mobile 동시 사용 가능) - startup에서 많이 사용(사이트에 사람이 많이 안몰리는 곳)

http://jqueryui.com/

http://getbootstrap.com/

https://d3js.org/

데이터 시각화에 대해서 공부해 보자 - jQuery가 선행학습이 되어 있어야 한다.

Source Code(GitHub)

여기서 GitHub이란 협업을 위한 사이트로 공유에 중점을 둔다.

jQuery Eclipse 실행

위 복사한 내용을 WebContent안에 붙여넣기

jQueryUIEx01

accordion 클릭 후 출력상태

jQueryUIEx02

Stable 다운

Custom Download로 가서 thema 다운

다운 받은 jquery-ui-1.12.1에서 아래 파일만 복사해서 이클립스내 js 폴더에 붙여넣는다

다운 받은 jquery-ui-theme-1.12.1에서 thems 폴더안에 있는 모든 파일을 복사해서 이클립스내 css 폴더에 붙여넣는다

다 하면 위와 같은 tree가 구성될 것이다.

index.jsp 파일을 만들어 주자

jQueryUIEx02.WebContent.index

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { alert('Hello jQuery UI Test'); });

alert 구문 지우고 이걸 앞으로 탬플릿으로 사용할 것이다

Button을 만들어 보자

jQueryUIEx02.WebContent.ex01

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); }); 난 버튼 난 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); }); 난 버튼 난 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); $('input[type="submit"]').button(); }); 난 버튼 난 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); $('input[type="button"]').button(); }); 난 버튼 난 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); $('input[type="button"]').button(); $('a').button(); }); 난 버튼 난 버튼 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); $('input[type="button"]').button(); $('a').button(); $('#btn3').button(); }); 난 버튼 난 버튼 버튼 나도 버튼

F12 DOM 탐색기로 보면 내가 주지도 않은 CSS가 추가되어 있다. class는 여기서 자동 설정해주고 있다.

테마를 바꾸면 디자인이 전부 다 바뀐다

에서 base를 바꿔주면 된다

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); $('input[type="button"]').button(); $('a').button(); $('#btn3').button(); }); 난 버튼 난 버튼 버튼 나도 버튼

사이즈가 좀 커서 줄여보자 - body { font-size: 70%; }

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#btn2').button(); $('input[type="button"]').button(); $('a').button(); $('#btn3').button(); }); 난 버튼 난 버튼 버튼 나도 버튼

jQueryUIEx02.ex02

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#btn2').button().on('click', function() { alert('click'); }); }); 난 버튼 난 버튼 버튼 나도 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#btn2').button().on('click', function() { alert('click'); }); $('a').button().on('click', function() { alert('click'); }); }); 난 버튼 난 버튼 버튼 나도 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#btn2').button().on('click', function() { alert('click'); }); $('a').button().on('click', function() { alert('click'); }); }); 난 버튼 난 버튼 버튼 나도 버튼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#btn2').button().on('click', function() { alert('click'); }); // submit $('a').button().on('click', function(e) { alert('click'); e.preventDefault(); }); }); 난 버튼 난 버튼 버튼 나도 버튼

preventDefault()를 주게 되면 자동으로 페이지가 네이버로 전환되는것을 막아준다.

jQeuryUIEx02.ex03

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#btn1').button({ icon: 'ui-icon-gear', iconPosition: 'end' }); $('#btn2').button({ icon: 'ui-icon-flag', showLabel: false }); }); 난 버튼 난 버튼

아이콘값을 불러와서 버튼에 추가해줄 수 있다.

jQueryUIEx04.ex04

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { }); 호텔 등급 : 2 star 3 star 4 star 5 star

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('input[type="checkbox"]').checkboxradio(); }); 호텔 등급 : 2 star 3 star 4 star 5 star

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { //$('input[type="checkbox"]').checkboxradio(); $('input[type="checkbox"]').checkboxradio({ icon: false }); }); 호텔 등급 : 2 star 3 star 4 star 5 star

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { //$('input[type="checkbox"]').checkboxradio(); $('input[type="checkbox"]').checkboxradio({ icon: false }); $('input[type="radio"]').checkboxradio(); }); 호텔 등급 : 2 star 3 star 4 star 5 star 위치 서울 대전 부산 목포

토글 기능 없음

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { //$('input[type="checkbox"]').checkboxradio(); $('input[type="checkbox"]').checkboxradio({ icon: false }); $('input[type="radio"]').checkboxradio(); }); 호텔 등급 : 2 star 3 star 4 star 5 star 위치 서울 대전 부산 목포

라디오는 원칙이 단일 선택이 원칙이므로 name을 r1으로 통일해줘야 한다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { //$('input[type="checkbox"]').checkboxradio(); $('input[type="checkbox"]').checkboxradio({ icon: false }); //$('input[type="radio"]').checkboxradio(); $('input[type="radio"]').checkboxradio({ icon: false }); }); 호텔 등급 : 2 star 3 star 4 star 5 star 위치 서울 대전 부산 목포

jQueryUIEx02.progressbar

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar(); });

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 50 }); });

회색(base)가 싫어서 다른색(cupertino)을 적용해보았다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 50 }); $('#btn1').button(); $('#btn2').button(); }); 감소 증가

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 50 }); $('#btn1').button().on('click', function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value - 5); }); $('#btn2').button().click(function() { }); }); 감소 증가

감소를 해봤으니 증가도 추가해 보자

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 50 }); $('#btn1').button().on('click', function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value - 5); }); $('#btn2').button().click(function() { $('#progressbar').progressbar( 'value', $('#progressbar').progressbar('value') + 5); }); }); 감소 증가

progressbar를 시작하면 5씩 증가하고 가득 차면 전송 완료 창이 뜨게 해보자

jQueryUIEx02.progressbar2

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 0 }); $('#btn1').button().on('click', function() { increase = setInterval(function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value + 5); if(value==100) { alert('전송 완료'); clearInterval(increase); } }, 500); }); $('#btn2').button().on('click', function() { clearInterval(increase); }) }); 시작 일시정지

Custom Label을 이용하여 아래와 같이 구현해보자

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } .ui-progressbar { position: relative; } .progress-label { position: absolute; left: 50%; top: 4px; font-weight: bold; text-shadow: 1px 1px 0 #fff; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 0 }); $('#btn1').button().on('click', function() { increase = setInterval(function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value + 5); $('.progress-label').text(value + '%'); if(value==100) { alert('전송 완료'); clearInterval(increase); } }, 500); }); $('#btn2').button().on('click', function() { clearInterval(increase); }) }); Loading ... 시작 일시정지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } .ui-progressbar { position: relative; } .progress-label { position: absolute; left: 50%; top: 4px; font-weight: bold; text-shadow: 1px 1px 0 #fff; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 0, change: function() { console.log('change 호출'); }, complete: function() { console.log('change 호출'); } }); $('#btn1').button().on('click', function() { increase = setInterval(function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value + 5); $('.progress-label').text(value + '%'); if(value==100) { alert('전송 완료'); clearInterval(increase); } }, 500); }); $('#btn2').button().on('click', function() { clearInterval(increase); }) }); Loading ... 시작 일시정지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } .ui-progressbar { position: relative; } .progress-label { position: absolute; left: 50%; top: 4px; font-weight: bold; text-shadow: 1px 1px 0 #fff; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 0, change: function(event, ui) { console.log('change 호출 ' + $(this).progressbar('value')); }, complete: function() { console.log('complete 호출'); } }); $('#btn1').button().on('click', function() { var increase = setInterval(function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value + 5); //$('.progress-label').text(value + '%'); if(value==100) { alert('전송 완료'); clearInterval(increase); } }, 500); }); $('#btn2').button().on('click', function() { clearInterval(increase); }) }); Loading ... 시작 일시정지

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } .ui-progressbar { position: relative; } .progress-label { position: absolute; left: 50%; top: 4px; font-weight: bold; text-shadow: 1px 1px 0 #fff; } // 커스텀 javascript $(document).ready(function() { $('#progressbar').progressbar({ value: 0, change: function(event, ui) { //console.log('change 호출 ' + $(this).progressbar('value')); $('.progress-label').text($(this).progressbar('value') + '%'); }, complete: function() { //console.log('complete 호출'); $('.progress-label').text('전송 완료'); } }); $('#btn1').button().on('click', function() { var increase = setInterval(function() { var value = $('#progressbar').progressbar('value'); $('#progressbar').progressbar('value', value + 5); //$('.progress-label').text(value + '%'); if(value==100) { alert('전송 완료'); clearInterval(increase); } }, 500); }); $('#btn2').button().on('click', function() { clearInterval(increase); }) }); Loading ... 시작 일시정지

jQueryUIEx02.slider01

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider(); });

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal' }); });

수평

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ //orientation: 'horizontal' orientation: 'vertical' }); });

수직

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', //orientation: 'vertical' value: 50 }); });

기본값 : 50

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick value: 50, min: 0, max: 200 }); });

최소 0, 최대 200

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick value: 50, min: 0, max: 200, slide: function() { console.log($(this).slider('value')); } }); });

동작중 모든 값 출력

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick value: 50, min: 0, max: 200, change: function() { console.log($(this).slider('value')); } /* slide: function() { console.log($(this).slider('value')); } */ }); });

이동 된 위치 값 출력

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick value: 50, min: 0, max: 200, step: 20, change: function() { console.log($(this).slider('value')); } /* slide: function() { console.log($(this).slider('value')); } */ }); });

값 20의 간격으로 이동되고 출력

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick range: true, value: [10, 100], min: 0, max: 200, //step: 20, /* change: function() { console.log($(this).slider('value')); } */ slide: function() { console.log($(this).slider('value')); } }); });

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick range: true, values: [10, 100], min: 0, max: 200, //step: 20, /* change: function() { console.log($(this).slider('value')); } */ slide: function() { console.log($(this).slider('values', 0)); console.log($(this).slider('values', 1)); } }); });

두 틱의 값을 받아올 수 있다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#slider').slider({ orientation: 'horizontal', // orientation: 'vertical' // tick range: true, values: [10, 100], min: 0, max: 200, //step: 20, /* change: function() { console.log($(this).slider('value')); } */ slide: function(event, ui) { //console.log($(this).slider('values', 0)); //console.log($(this).slider('values', 1)); // ui - dom 내용 console.log(ui.values[0]); console.log(ui.values[1]); } }); });

jQueryUIEx02.spinner

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#spinner').spinner(); }); 수량

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#spinner').spinner({ min: 0, max: 10 }); }); 수량

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#spinner').spinner({ min: 0, max: 10, step: 2 }); }); 수량

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#spinner').spinner({ min: 0, max: 10, step: 2, spin: function(event, ui) { console.log(ui.value); } }); }); 수량

jQueryUIEx02.selectmenu01

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { }); jQuery.js ui.jQuery.js mobile.jQuery.js

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#files').selectmenu(); }); jQuery.js ui.jQuery.js mobile.jQuery.js

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#files').selectmenu(); }); 다음을 선택 jQuery.js ui.jQuery.js mobile.jQuery.js

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#files').selectmenu(); }); 다음을 선택 jQuery.js ui.jQuery.js mobile.jQuery.js jQuery.js ui.jQuery.js mobile.jQuery.js

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#files').selectmenu({ change: function(event, ui) { console.log(ui.item.value); } }); }); 다음을 선택 jQuery.js ui.jQuery.js mobile.jQuery.js jQuery.js ui.jQuery.js mobile.jQuery.js

jQueryUIEx02.autocomplete

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { var availableTags = [ 'ActionScript', 'AppleScript', 'Asp', 'BASIC', 'C', 'C++', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'Python', 'Ruby', 'Scala', 'Scheme' ]; $('#tags').autocomplete({ source: availableTags }); }); 언어 선택 :

jQueryUIEx02.WebContent.data.data_json - ajax로 데이터를 받아오자

<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%>

contentType과 trimDirectiveWhitespaces를 수정한다.

<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%> { "data" : [ "ActionScript", "AppleScript", "Asp", "BASIC", "C", "C++", "Clojure", "COBOL", "ColdFusion", "Erlang", "Fortran", "Groovy", "Haskell", "Java", "JavaScript", "Lisp", "Perl", "PHP", "Python", "Ruby", "Scala", "Scheme" ] }

jQueryUIEx02.autocomplete02를 만들어서 availableTags 배열 데이터를 ajax로 대체하자.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { //var availableTags; $.ajax({ url: './data/data_json.jsp', type: 'get', dataType: 'json', success: function(json) { var availableTags = json.data; $('#tags').autocomplete({ source: availableTags }); }, error: function() { alert('서버 에러'); } }); }); 언어 선택 :

jQueryUIEx02.accordion01

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#accordion').accordion(); }); Section 1 Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. Section 2 Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. Section 3 Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. List item one List item two List item three Section 4 Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#accordion').accordion(); }); 내용 추가 Section 1 Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. Section 2 Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. Section 3 Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. List item one List item two List item three Section 4 Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

내용 추가하기

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#accordion').accordion(); $('#btn1').button().on('click', function() { var data = ''; data += '

Section 5

'; data += '
'; data += '

'; data += ' 추가된 데이터'; data += '

'; data += '
'; $('#accordion').append(data); }); }); 내용 추가 Section 1 Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. Section 2 Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. Section 3 Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. List item one List item two List item three Section 4 Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

추가된 데이터는 accordion화 되지 않는다. 왜냐하면 css가 안먹힌다. 만들어진 순서가 다르므로

그래서 아래와 같이 refresh를 추가해줘야 한다.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#accordion').accordion(); $('#btn1').button().on('click', function() { var data = ''; data += '

Section 5

'; data += '
'; data += '

'; data += ' 추가된 데이터'; data += '

'; data += '
'; $('#accordion').append(data); $('#accordion').accordion('refresh'); }); }); 내용 추가 Section 1 Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. Section 2 Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. Section 3 Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. List item one List item two List item three Section 4 Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.

jQueryUIEx02.accordion02 - 아이콘을 넣어보자

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { var icons = { header:"ui-icon-circle-arrow-e", activeHeader: "ui-icon-circle-arrow-s" }; $('#accordion').accordion({ icons: icons }); $('#toggle').button().on('click', function() { if($('#accordion').accordion('option', 'icons')) { $('#accordion').accordion('option', 'icons', null); } else { $('#accordion').accordion('option', 'icons', icons); } }); $('#btn1').button().on('click', function() { var data = ''; data += '

Section 5

'; data += '
'; data += '

'; data += ' 추가된 데이터'; data += '

'; data += '
'; $('#accordion').append(data); $('#accordion').accordion('refresh'); }); }); 내용 추가 Section 1 Mauris mauris ante, blandit et, ultrices a, suscipit eget, quam. Integer ut neque. Vivamus nisi metus, molestie vel, gravida in, condimentum sit amet, nunc. Nam a nibh. Donec suscipit eros. Nam mi. Proin viverra leo ut odio. Curabitur malesuada. Vestibulum a velit eu ante scelerisque vulputate. Section 2 Sed non urna. Donec et ante. Phasellus eu ligula. Vestibulum sit amet purus. Vivamus hendrerit, dolor at aliquet laoreet, mauris turpis porttitor velit, faucibus interdum tellus libero ac justo. Vivamus non quam. In suscipit faucibus urna. Section 3 Nam enim risus, molestie et, porta ac, aliquam ac, risus. Quisque lobortis. Phasellus pellentesque purus in massa. Aenean in pede. Phasellus ac libero ac tellus pellentesque semper. Sed ac felis. Sed commodo, magna quis lacinia ornare, quam ante aliquam nisi, eu iaculis leo purus venenatis dui. List item one List item two List item three Section 4 Cras dictum. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aenean lacinia mauris vel est. Suspendisse eu nisl. Nullam ut libero. Integer dignissim consequat lectus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Toggle icons

어코디온을 활용하여 구구단 시작단, 끝단을 입력하여 단수별로 출력되게 해보자

jQueryUIEx02.gugudan01

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> Insert title here /* 커스텀 css */ body { font-size: 70%; } // 커스텀 javascript $(document).ready(function() { $('#startDan').spinner({ min: 1, max: 9 }); $('

댓글

이 블로그의 인기 게시물

[django] django rest framework 로그인 과정 | 장고 로그인 | 인증...

[django] django rest framework 로그인 과정 | 장고 로그인 | 인증... django 는 기능이 참 너무 많다 ^^; 지금은 서버는 django로, 프론트는 angular를 붙여서 간단한 웹을 만들어 보려고 한다. 웹 만들때 항상 회원가입/로그인 기능은 맨 앞에 구현한다. 어떻게 구현하면 좋을까... 찾아보다가 이 기능을 구현할 수 있는 방법이 너무 많아서 정보를 찾기 더 어려웠다. 일단 나는 django에서 django rest framework라는 것을 사용해서 API를 만드려고 한다. 순수 django 튜토리얼에는 바로 template 랑 연결해서 설명하는 부분이 많았다. 나는 그냥 API 만 만들고 싶다고!! 그래서 찾은 것이 django REST framework. https://www.django-rest-framework.org/api-guide/authentication django REST framework 설치 using pip pip install djangorestframework settings.py INSTALLED APPS 에 추가해야함 INSTALLED_APPS = [ ... 'rest_framework', ] django REST framework 에서도 인증 관련해서 제공하는 것이 1개가 아닌 여러 개다. 나는 그중에 TokenAuthentication을 이용해서 로그인을 구현해 보려고 한다. TokenAuthentication Token authentication is appropriate for client-server setups, such as native desktop and mobile clients. 이렇게 나와있어서 내가 하려는 것과 일치해서 이걸로 결정 ~ 솔직히 처음 로그인을 구현하려고 하면 도대체 그 과정이 어떻게 되는지 모를 수 도 있다. 나는 쉽게 정리하면 아래와 같은 과정이라고 생각한다. 로그인 로그아웃...

(주)레터플라이 채용 정보: 프로그래밍을 생각하면 가슴이 뛰는 개발자...

(주)레터플라이 채용 정보: 프로그래밍을 생각하면 가슴이 뛰는 개발자... Angular.js, Python, MySQL 중 한 가지 언어에 뛰어나신 분도 좋고 개발 업무 전반적으로 센스가 있으신 분도 환영합니다. 맡은 업무를 성실하게 수행해 나갈 수 있는 책임감과 태도를 갖고계신 분, 그리고 항상 새로운 방법론에 도전하고 포기를 모르는 분일수록 저희와 더욱 잘 맞을 것 같습니다. Angular.js, Python, MySQL 중 한 가지 언어에 뛰어나신 분도 좋고 개발 업무 전반적으로 센스가 있으신 분도 환영합니다. 팀 내 뛰어난 풀스택 개발자분들이 Angular.js, Python, MySQL 모두 작업 가능하시니 오셔서 함께 배우며 즐겁게 작업하시면 됩니다. 맡은 업무를 성실하게 수행해 나갈 수 있는 책임감과 태도를 갖고계신 분, 그리고 항상 새로운 방법론에 도전하고 포기를 모르는 분일수록 저희와 더욱 잘 맞을 것 같습니다. 개발 업무: 레터플라이의 핵심 기능인 편지, 사진을 제작하는 레터에디터, 포토에디터 개발. 이 기능들은 "모바일 웹을 통한 출력제품 생산 자동화 기술"(특허 출원 준비중)로서 레터플라이에서 자체개발했습니다. 근무 지역: 광화문역 5번출구 바로 앞 근무 환경: 책임과 존중을 중요시하는 수평적인 분위기, 도전적이며 서로에게 배우는 문화 근무 시간: 10-19시, 출근시간 자유 지정. 급여: 연봉/스톡옵션 협의 지원 방법: 팀 지원하기 더 많은 내용은 더 많은 내용은 더팀스 에서 확인하세요! from http://theteams.tistory.com/721 by ccl(A) rewrite - 2020-03-20 09:20:18

jqxGrid 정렬, 필터 메뉴 숨기기

jqxGrid 정렬, 필터 메뉴 숨기기 How I can remove filter to particular grid column - Angular, Vue, React, Web Components, Javascript, HTML5 Widgets Hi, I tried that it's working. I set properties to those columns as sortable: false, filterable: false. but when I clicked on the column one drop down is appearing with options "sort ascending", "sort descending", "remove sort" and those are all in disable www.jqwidgets.com from http://devesim.tistory.com/90 by ccl(A) rewrite - 2020-03-11 04:20:29