Sha256: 6aeb1f2f7bfcbe4e54572fdaa629d7137c98d33e8b0bfd379ffb87ed0e10390a
Contents?: true
Size: 1.96 KB
Versions: 1
Compression:
Stored size: 1.96 KB
Contents
(function ($) { $.fn.characterCounter = function(){ return this.each(function(){ var $input = $(this); var $counterElement = $input.parent().find('span[class="character-counter"]'); // character counter has already been added appended to the parent container if ($counterElement.length) { return; } var itHasLengthAttribute = $input.attr('length') !== undefined; if(itHasLengthAttribute){ $input.on('input', updateCounter); $input.on('focus', updateCounter); $input.on('blur', removeCounterElement); addCounterElement($input); } }); }; function updateCounter(){ var maxLength = +$(this).attr('length'), actualLength = +$(this).val().length, isValidLength = actualLength <= maxLength; $(this).parent().find('span[class="character-counter"]') .html( actualLength + '/' + maxLength); addInputStyle(isValidLength, $(this)); } function addCounterElement($input) { var $counterElement = $input.parent().find('span[class="character-counter"]'); if ($counterElement.length) { return; } $counterElement = $('<span/>') .addClass('character-counter') .css('float','right') .css('font-size','12px') .css('height', 1); $input.parent().append($counterElement); } function removeCounterElement(){ $(this).parent().find('span[class="character-counter"]').html(''); } function addInputStyle(isValidLength, $input){ var inputHasInvalidClass = $input.hasClass('invalid'); if (isValidLength && inputHasInvalidClass) { $input.removeClass('invalid'); } else if(!isValidLength && !inputHasInvalidClass){ $input.removeClass('valid'); $input.addClass('invalid'); } } $(document).on('turbolinks:load', function(){ $('input, textarea').characterCounter(); }); }( jQuery ));
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
materialize-sass-0.97.8 | app/assets/javascripts/materialize/character_counter.js |