배열의 특정 요소 제거


배열 = 배열.splice($.inArray("특정요소", 배열),1);



배열을 문자열로 출력


배열 = 배열.join("합칠 문자열");


$("iframe selector").on("load", function(){

// script

});


출처: http://stackoverflow.com/questions/30005/how-do-i-fire-an-event-when-a-iframe-has-finished-loading-in-jquery

옵션 설명 사용예
altField $( ".selector" ).datepicker({
    altField: ".selecter"
});
선택한 날짜가 해당 폼에 입력된다.
altFormat $( ".selector" ).datepicker({
    altFormat: "yyyy-mm-dd"
});
altField의 폼에 입력될 날짜의 형식
beforeShow $( ".selector" ).datepicker({
    beforeShow: function(input, inst) {
        // input은 폼
        // inst는 datepicker의 여러 값이 있던데
        //          아직 쓸모를 찾지 못했다.
    }
});
달력이 그려지기 전에 처리할 일들을 지정할 수 있다.
buttonImage $( ".selector" ).datepicker({
    buttonImage: "/images/datepicker.gif"
});
 
buttonImageOnly $( ".selector" ).datepicker({
    buttonImageOnly: true
});
 
buttonText $( ".selector" ).datepicker({
    buttonText: "선택"
});
 
changeMonth $( ".selector" ).datepicker({
    changeMonth: true
});
셀렉트박스로 월 변경 여부
changeYear $( ".selector" ).datepicker({
    changeYear: true
});
셀렉트박스로 연도 변경 여부
closeText

$( ".selector" ).datepicker({
    closeText: "닫기"
});


constrainInput $( ".selector" ).datepicker({
    constrainInput: false
});
형식외 텍스트 입력제한. 디폴트 true
currentText

$( ".selector" ).datepicker({
    currentText: "Now" 

});

 
dateFormat $( ".selector" ).datepicker({
    dateFormat: "yy-mm-dd"
});
 
dayNames $( ".selector" ).datepicker({
    dayNames:
        [ "일요일", "월요일", "화요일", "수요일",
        "목요일", "금요일", "토요일" ]
});
 
dayNamesMin $( ".selector" ).datepicker({
    dayNamesShort:
        [ "S", "M", "T", "W", "T", "F", "Sa" ]
});
 
dayNamesShort $( ".selector" ).datepicker({
    dayNamesShort:
        [ "일", "월", "화", "수", "목", "금", "토" ]
});
 
defaultDate $( ".selector" ).datepicker({
    defaultDate: +7
});
달력 기본 출력될때 기준일. Date타입, 숫자, String 다 가능하다.
duration $( ".selector" ).datepicker({
    duration: "slow"
});
달력 나타나는 속도, "slow", "normal", "fast"
firstDay $( ".selector" ).datepicker({
    firstDay: 1
});
주의 시작일을 일요일로 하려면 0, 월요일은 1
gotoCurrent $( ".selector" ).datepicker({
    gotoCurrent: true
});
 
maxDate $( ".selector" ).datepicker({
    maxDate: "+1m +1w"
});
 
minDate $( ".selector" ).datepicker({
    minDate: new Date(2012, 1 - 1, 1)
});
 
monthNames $( ".selector" ).datepicker({
    monthNames:
        [ "1월", "2월", "3월", "4월", "5월", "6월",
        "7월", "8월", "9월", "10월", "11월", "12월" ]
});
 
monthNamesShort $( ".selector" ).datepicker({
    monthNamesShort:
        [ "Jan", "Feb", "Mar", "Apr", "Maj", "Jun",
        "Jul", "Aug", "Sep", "Okt", "Nov", "Dec" ]
});
 
nextText $( ".selector" ).datepicker({
    nextText: "차월"
});
 
numberOfMonths $( ".selector" ).datepicker({
    numberOfMonths: [ 2, 3 ]
});
여러개월 달력을 표시
onChangeMonthYear $( ".selector" ).datepicker({
    onChangeMonthYear: function(year, month, inst) {
        // year 년도 숫자
        // month 월 숫자
        // inst는 datepicker의 여러 값이 있던데
        //          아직 쓸모를 찾지 못했다.
    }
});
달력에서 연월을 셀렉트 박스로 바꿀 수 있을때 바꿀때 이벤트
onClose $( ".selector" ).datepicker({
    onClose: function(dateText, inst) {
        // dateText는 날짜 스트링
        // inst는 datepicker의 여러 값이 있던데
        //          아직 쓸모를 찾지 못했다.
    }
});
 
onSelect $( ".selector" ).datepicker({
    onSelect: function(dateText, inst) {
        // dateText는 날짜 스트링
        // inst는 datepicker의 여러 값이 있던데
        //          아직 쓸모를 찾지 못했다.
    }
});
 
prevText $( ".selector" ).datepicker({
    prevText: "전월"
});
 
selectOtherMonths $( ".selector" ).datepicker({
    selectOtherMonths: true
});
다른 달도 출력시 선택가능 여부. 디폴트는 false
showAnim $( ".selector" ).datepicker({
    showAnim: "fold"
});
달력 에니메이션 효과. show(디폴트), slideDown, fadeIn etc..
showCurrentAtPos $( ".selector" ).datepicker({
    showCurrentAtPos: 3
});
여러 달의 달력을 한꺼번에 띄울 경우 시작월을 현재를 기준으로 달 수.
0이 현재월. -5면 5개월 전, 3이면 3개월 후
showOptions $( ".selector" ).datepicker({
    showOptions: { direction: "up" }
});
달력 보여줄때 이벤트 옵션
showOtherMonths $( ".selector" ).datepicker({
    showOtherMonths: true
});
월 1일 이전, 월 말일 이후 빈칸에 이전달, 다음달 날짜 출력 여부
showWeek $( ".selector" ).datepicker({
    showWeek: true
});
주수 출력 여부
stepMonths $( ".selector" ).datepicker({
    stepMonths: 3
});
달력에서 좌우 선택시 이동할 개월 수
weekHeader $( ".selector" ).datepicker({
    weekHeader: "주"
});
 
yearRange $( ".selector" ).datepicker({
    yearRange: "2010:2013"
});
연도 범위
yearSuffix $( ".selector" ).datepicker({
    yearSuffix: "년"
});
 


그리드 reload


$("#tblist1").trigger("reloadGrid"); // 보통
$("#tblist1")[0].triggerToolbar(); // filterToolbar를 사용한 경우


그리드 url 바꿀때

$("#tblist1").setGridParam({url:"xml/data_xml.jsp"});


그리드 clear

$("#tblist1").clearGridData(true);


멀티셀렉트 되는 그리드에서 체크박스 전체 해제


$("#tblist1").jqGrid('resetSelection');


멀티셀렉트 되는 그리드에서 특정값 체크박스 선택되게

$('#tblist1').jqGrid('setSelection', 'tblist1 row id값').prop('checkbox', true);




.bind()

이미 존재하는 DOM에 한해에서 이벤트를 지정할 수 있다.


$(셀렉터).bind(이벤트명, 이벤트처리함수);



.live()

1.4 이하에서 미래의 DOM까지 이벤트를 할당했던 방식


$(셀렉터).live(이벤트명, 이벤트처리함수);



.delegate()

1.4에 추가되서 1.6 이하에서 미래의 DOM까지 이벤트를 할당했던 방식


$(document).delegate(셀렉터, 이벤트명, 이벤트처리함수);



.on()

1.7에 추가되서 bind과 기존 live, delegate를 모두 처리할 수 있다.


$(셀렉터).on(이벤트명, 이벤트처리함수); // 현재 DOM만

$(document).on(이벤트명, 셀렉터, 이벤트처리함수); // 미래 DOM까지


'Javascript > jQuery' 카테고리의 다른 글

iframe 로딩 후에 동작할 스크립트 작성법  (0) 2015.08.19
jQuery UI datepicker 옵션들  (0) 2013.10.02
jgGrid 몇 가지  (0) 2013.09.11
jqGrid 기본 - XML 버전  (2) 2013.05.14
이미지 로드 에러시 대체 이미지 출력  (0) 2011.06.30

공식 사이트? 공식 블로그? : http://www.trirand.com/

데모페이지 : http://trirand.com/blog/jqgrid/jqgrid.html


데이터는 xml와 json으로 불러올 수 있는데 느린 외부 서버를 가지고 테스트해본 결과 

json보다 xml이 약간 더 속도가 빨라서 xml을 쓰고 있다.


인클루드할 파일들은 다음과 같다. 순서는 지켜져야 한다.

<link rel="stylesheet" type="text/css" media="screen" href="/AMES/js/jquery/css/custom-theme/jquery-ui-1.8.21.custom.css" /> <!-- jquery UI -->

<link rel="stylesheet" type="text/css" media="screen" href="/AMES/js/jquery.jqGrid/css/ui.jqgrid.css" /> <!-- jqGrid -->


<script src="/AMES/js/jquery/js/jquery-1.7.2.min.js" type="text/javascript"></script> <!-- jquery -->

<script src="/AMES/js/jquery/js/jquery-ui-1.8.21.custom.min.js" type="text/javascript"></script> <!-- jquery UI -->

<script src="/AMES/js/jquery.jqGrid/js/jquery.jqGrid.min.js" type="text/javascript"></script> <!-- jqGrid -->

<script src="/AMES/js/jquery.jqGrid/js/i18n/grid.locale-en.js" type="text/javascript"></script> <!-- jqGrid 언어셋 -->


xml 양식은 다음과 같다.

<rows>

<page>현재페이지번호</page>

<total>페이징을 위한 총 페이지 수(계산해서 넘겨줘야 한다.)</total>

<records>총 row수</records>


<row id="row를 유니크하게 표현할 수 있는 값. 애매하면 row 번호로 정도로 해도 된다. 단순 출력이면 id는 없어도 된다. ">

<cell>값1</cell>

<cell>값2</cell>

<cell>값3</cell>

</row>

</rows>


화면단은 다음과 같다.

<table id="tblist1"></table> <!-- 그리드가 그려짐 -->

<div id="pager"></div> <!-- 페이징 자리 -->


기본 스크립트는 다음과 같다.

$('#tblist1').jqGrid({

caption: '그리드 이름. 출력된다',

datatype: "xml", // or json

autowidth: true, // true면 알아서 화면 꽉 차게. false면 width 속성으로 grid 가로 사이즈를 지정할 수 있다.

height: 250, // 그리드 높이

shrinkToFit: false, // 컬럼이 그리드 width에 맞춰 자동으로 맞춰질지 여부

scrollOffset: 0,

rownumbers:true, // 줄번호 표시 여부

altRows:true, // title 태그처럼 값이 커서 옆에 표시는 것 여부

colNames:['값1', '값2', '값3'], // 그리드에서 그려질 컬럼 이름

colModel:[

{name:'값1',index:'VALUE1', width:90}, // name은 모르겠고 index는 해당 그리드 값 뽑아서 쓸때 필요하다.

{name:'값2',index:'VALUE2', width:100, align:'right', formatter:'currency', formatoptions:{decimalSeparator: ".", thousandsSeparator: ",", decimalPlaces: 0, defaultValue: 0, prefix: "$ "}},

// 정렬도 되고 자동으로 , 도 찍어 줄 수 있으며 prefix 도 가능하다.

{name:'값3',index:'VALUE3', width:0, hidden: true} // hidden도 가능하다.

],

loadonce : false, // 페이징을 할거면 false가 낫고 고정된 값이라면 true로 해서 한번만 불러온 값으로 출력하는 것이 효율적이다.

hidegrid : false,

                multiselect : true, // 여러 줄 선택할 수 있다. 이 값은 $("#tblist1").jqGrid('getGridParam','selarrrow'); 이렇게 가져올 수 있는데 배열이다.

sortname: 'VALUE1 DESC, VALUE2', // 정렬할 컬럼명인데 단독 컬렴명도 되지만 좌측처럼 여러 값을 넣어도 된다. 이 값은 sidx 라는 이름으로 파라미터가 넘어간다.

sortorder: 'ASC', // 정렬방식. 파라미터 명은 sord 이다.

pager : '#pager', // 화면단에 페이징 자리 이름이다.

rowNum : 200, // 한 화면에 기본 row수.  

rowList:[50,100,150,200,250,300], // 한 화면의 row를 select 박스로 선택할 수 있게 해준다.

viewrecords : true,

recordpos: "left",

showpage:true, // 페이징 true

gridview : true, // 처리속도를 빨리해주나 treeGrid, subGrid, afterInsertRow(event)에는 사용할 수 없다.

emptyrecords: '데이터가 존재하지 않습니다.', // 데이터가 없을때 출력될 메시지. 페이징 자리에 출력되서 눈에 그다지 띄지는 않는다.

afterInsertRow: function(rowid, rowdata, rowelem) { // 데이터를 로드할때의 액션

var STATUS = rowdata.STATUS;

var color=null;

if(STATUS=="Ready") color = "#ff8c00";

else if(STATUS=="Started") color = "#ffa500";

$('#tblist1').setCell(rowid, 'STATUS', STATUS, { background: color }); // 이런식으로 특정 컬림이 특정 값일때 색상을 바꿔줄 수도 있다.

},


onSelectRow: function(id) { // row를 선택했을때 액션. id는 xml의 id다.

var ret = $("#tblist1").jqGrid('getRowData',id); // ret는 선택한 row 값을 쥐고있는 객체다.

var value1 = ret.VALUE1; // 이런식으로 값을 가져올 수 있다. 

}


});


// 컬럼명 하단에 컬럼마다 input창이 붙어서 inline 검색을 할 수 있는 폼으로 만들어준다.

$("#tblist1").filterToolbar({

stringResult: true,

groupOp: 'AND',

searchOnEnter: true,

beforeSearch: function() { //  검색전 액션이다.

$("#tblist1").setGridParam({url:"xml/data_xml.jsp?"}); // 데이터 xml 주소를 지정할 수 있다.

}

}); 


// 컬럼그룹을 만들어 두 줄로 표시할 수 있다.

$("#tblist1").jqGrid('setGroupHeaders', {

useColSpanStyle: true, 

groupHeaders:[ 

{startColumnName: '값1', numberOfColumns: 2, titleText: 'COL GROUP'}

// startColumnName은 'colNames'에 표시한 컬럼명

// numberOfColumns은 시작한 컬럼을 포함해서 묶을 연속하는 컬럼수

// titleText 컬럼그룹명. 화면에 출력된다.

]});


마지막으로 인라인 검색시 넘어오는 데이터는 json형식의 파라미터로 다음과 같다.

{\"groupOp\":\"AND\",\"rules\":[{\"field\":\"VALUE1\",\"op\":\"bw\",\"data\":\"검색텍스트1\"},{\"field\":\"VALUE2\",\"op\":\"bw\",\"data\":\"검색텍스트2\"}]}


트리 그리드는 추후에.

$("img").error(function(){ 
    $(this).attr("src","바꿀경로"); 
});


+ Recent posts