|
| 1 | +(function($){ |
| 2 | + /** |
| 3 | + * 최대 글자 수, 현재 글자 수 표시 |
| 4 | + * @param {Object} options 옵션 |
| 5 | + * @return {Object} jQuery Object this; |
| 6 | + */ |
| 7 | + $.fn.maxlength = function (options){ |
| 8 | + var settings = $.extend( |
| 9 | + {}, |
| 10 | + $.fn.maxlength.defaults, |
| 11 | + options |
| 12 | + ); |
| 13 | + |
| 14 | + var counterElm = '<span class="text-limit">' + |
| 15 | + '<span data-val-length="target"></span>' + |
| 16 | + '<span data-val-length="max"></span>' + |
| 17 | + '</span>'; |
| 18 | + |
| 19 | + return this.each(function () { |
| 20 | + var $wrap = $(this); |
| 21 | + var $val = $wrap.find('[maxlength]'); |
| 22 | + var $parent = $wrap.find(settings.parent); |
| 23 | + var maxLength = $val.attr('maxlength') || 'maxlength를 설정해주세요'; |
| 24 | + |
| 25 | + if (!$wrap.find('.text-limit').length) { |
| 26 | + $parent.length ? $parent.append(counterElm) : $wrap.append(counterElm); |
| 27 | + $wrap.find(settings.target).html($val.val().length); |
| 28 | + $wrap.find(settings.maxTarget).html('/' + maxLength); |
| 29 | + |
| 30 | + $wrap.on('keyup', settings.valName, function (e) { |
| 31 | + var input = e.currentTarget; |
| 32 | + var val = input.value; |
| 33 | + if (val.length > maxLength) input.value = val.substr(0, maxLength); |
| 34 | + $wrap.find(settings.target).html(input.value.length); |
| 35 | + }); |
| 36 | + } |
| 37 | + }); |
| 38 | + }; |
| 39 | + |
| 40 | + $.fn.maxlength.defaults = { |
| 41 | + valName: '[maxlength]', |
| 42 | + target: '[data-val-length=target]', |
| 43 | + maxTarget: '[data-val-length=max]', |
| 44 | + parent: '[data-val-length=parent]', |
| 45 | + }; |
| 46 | +})(jQuery); |
0 commit comments