jQuery plugin guide 에 충실하지 못한 예제이라 자진 삭제하고 다시 올리려합니다.
댓글이 남아 있어 함부로 지우지 못하고 내용을 수정하였습니다.
감사합니다.
덧글:
혹시 내용 안에 함수(javascript에서 SOAP 호출 등)들에 관심이 있으셨던 분이 찾으신다면 별도 라이브러리의 형태로 다시 올리도록 하겠습니다.
혹~~~시~~~~나.. 그런 분들이 있으시다면 덧글 부탁드립니다.
Comment 5
-
컴포지트
2011.10.07 18:32
-
한머리
2011.10.07 19:06
제가 사용하는 PC에서만의 문제인지 [글쓰기]와 [수정]에서 사용되는 editor에는 [확장 컴포넌트]라는 버튼이 안보입니다.
참고로 댓글작성에서는 보이네요.
감사합니다.
-
아... 좋은 내용 너무 잘 봤습니다. 감사합니다. 가뭄에 단비 같습니다. 많은 관심 부탁 드리며...
꼭 뵙고 싶습니다.
-
한머리
2011.10.08 11:36
좋은 내용이라니 과찬이십니다.
뵙고 인사드릴 기회가 있다면 제가 오히려 영광입니다.
감사합니다.
-
hskim618
2012.04.09 00:47
이제서야 글을 찾아서 읽게 되었네요.. 좋은 내용 감사합니다.
특히.. 쿠키 함수 매우 좋군요.. ^^


글을 쓸 때 에디터 버튼 중 확장 컴포넌트에 Code Highlighter 기능이 있습니다.
이 기능을 이용하면 코드 예제를 사용자에게 전달할 때 더 보기좋게 전달될 수 있습니다.
참고하세요.
님 코드에 해당 컴포넌트를 착용해 봤습니다. 보기보다 깔끔하죠?
( function ($) { //xml node value를 넣기 위한 encoding jquery에 추가 $.encXML = function (RawString) { return String(RawString).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/\'/g, ''').replace(/\"/g, '"'); }; //숫자인지검사 $.isNumeric = function (strNum) { return (strNum == parseInt(strNum)) }; //웹서비스호출 $.SOAPClient = function (WSURL, MethodName, Parameters, CallBack, Async) { var SOAPMessage = '<?xml version="1.0" encoding="utf-8"?>'; SOAPMessage += '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="">http://schemas.xmlsoap.org/soap/envelope/">'; SOAPMessage += '<soap:Body>'; SOAPMessage += '<' + MethodName + ' xmlns="' + $.SOAPClient.WSNamespace + '">'; $.each( Parameters, function (key, value) { SOAPMessage += '<' + key + '><![CDATA[' + $.encXML(value) + ']]></' + key + '>'; } ); SOAPMessage += '</' + MethodName + '>'; SOAPMessage += '</soap:Body>'; SOAPMessage += '</soap:Envelope>'; $.ajax({ type: "POST", url: WSURL, data: SOAPMessage, contentType: "text/xml; charset=\"utf-8\"", dataType: "xml", async: (Async == null ? true : Async), success: function (msg) { var _result = $(msg).find(MethodName + "Result"); CallBack(_result); }, error: function (result) { alert(result.status + ' ' + result.statusText + "\n\r " + result.responseText); } }); }; $.SOAPClient.WSNamespace = "http://tempuri.org/"; //xml에서 특정element들의 값을 text, value 짝으로 select tag에 바인드 $.bindSelectWithSelector = function (_selector, resultXML, valuefieldname, textfieldname, captiontext, captionvalue) { var values = $(resultXML).find(valuefieldname); var texts = $(resultXML).find(textfieldname); var _result = ""; if (captiontext != null && captionvalue != null) _result += "<option value=\"" + captionvalue + "\">" + captiontext + "</option>"; for (var i = 0; i < values.length; i++) { _result += "<option value=\"" + values[i].text + "\">" + texts[i].text + "</option>"; } $(_selector).html(_result); }; $.bindSelect = function (selecttagid, resultXML, valuefieldname, textfieldname, captiontext, captionvalue) { $.bindSelectWithSelector("#" + selecttagid, resultXML, valuefieldname, textfieldname, captiontext, captionvalue); }; //cookie 읽기/쓰기 $.cookie = function (key, value, options) { if (arguments.length > 1) { var o = $.extend({}, $.cookie.defaults, options); if (value === null || value === undefined) { value = ''; o.expires = -1; } if (o.expires.constructor != Date) { var today = new Date(); today.setDate(today.getDate() + o.expires); o.expires = today; } document.cookie = key + '=' + value + '; expires=' + o.expires.toUTCString() + (o.path ? '; path=' + (o.path) : '') + (o.domain ? '; domain=' + (o.domain) : '') + (o.secure ? '; secure' : ''); } else { if (result = new RegExp(key + "=(.*?)(?:;|$)").exec(document.cookie)) return decodeURIComponent(result[1]); return false; } }; //cookies option 기본값 $.cookie.defaults = { expires: 365, path: '/' }; /* end */ // form input 이 들어 있는 html을 읽기용 HTML로 변환 $.fn.ConvertToReadOnlyHTML = function () { $("input[type='button']", $(this)).remove(); $("input[type='radio']", $(this)).attr('disabled', true); $("input[type='checkbox']", $(this)).attr('disabled', true); $("input[type='text']", $(this)).each(function () { $(this).replaceWith("<span>" + $(this).val() + "</span>") }); $("textarea", $(this)).each(function () { $(this).replaceWith("<div style=\"style:inline;\">" + $(this).val() + "</div>") }); $("select", $(this)).each(function () { $(this).replaceWith("<span style=\"style:inline;\">" + $(this).find('option:selected').text() + "</span>") }); }; // table tag 특정 아이디의 row를 복사해서 맨마지막에 추가하기 $.CopyTableRow = function (repeatRowID) { $("#" + repeatRowID).parent().append($("#" + repeatRowID).clone()); }; // 삭제 버튼[-]이 속해져 있는 row의 삭제 $.RemoveTableRow = function (btnInstance, repeatRowID) { if ($("tr[id='" + repeatRowID + "']").length == 1) return; $(btnInstance).parent().parent().remove(); }; // table의 마지막 row를 복사해서 맨마지막에 추가 $.fn.AddTableRow = function () { if ($(this).get(0).tagName != "TABLE") { alert("It\'s not a TABLE."); return; } $(this).append($("tr:last", $(this)).clone()); } //테이블의 맨마지막 row삭제 $.fn.RemoveTableLastRow = function () { if ($(this).get(0).tagName != "TABLE") { alert("It\'s not a TABLE."); return; } if ($("tr", $(this)).length <= 2) { alert('최소한 제목 열 포함 2열 이상이 있어야 합니다.') return; } $("tr:last", $(this)).remove(); } } )(jQuery);