hummingbird-me/hummingbird

View on GitHub
app/assets/javascripts/old/charcount.js

Summary

Maintainability
A
1 hr
Test Coverage
/*
 *  Character Count Plugin - jQuery plugin
 *  Dynamic character count for text areas and input fields
 *  written by Alen Grakalic  
 *  http://cssglobe.com/
 *
 *  Copyright (c) 2009 Alen Grakalic (http://cssglobe.com)
 *  Dual licensed under the MIT (MIT-LICENSE.txt)
 *  and GPL (GPL-LICENSE.txt) licenses.
 *
 *  Built for jQuery library
 *  http://jquery.com
 *
 */
 
(function($) {

  $.fn.charCount = function(options){
    
    // default configuration properties
    var defaults = {  
      allowed: 140,   
      warning: 25,
      css: 'counter',
      counterElement: 'span',
      cssWarning: 'warning',
      cssExceeded: 'exceeded',
      counterText: ''
    }; 
      
    var options = $.extend(defaults, options); 
    
    function calculate(obj){
      var count = $(obj).val().length;
      var available = options.allowed - count;
      if(available <= options.warning && available >= 0){
        $(obj).next().addClass(options.cssWarning);
      } else {
        $(obj).next().removeClass(options.cssWarning);
      }
      if(available < 0){
        $(obj).next().addClass(options.cssExceeded);
      } else {
        $(obj).next().removeClass(options.cssExceeded);
      }
      $(obj).next().html(options.counterText + available);
    };
        
    this.each(function() {        
      $(this).after('<'+ options.counterElement +' class="' + options.css + '">'+ options.counterText +'</'+ options.counterElement +'>');
      calculate(this);
      $(this).keyup(function(){calculate(this)});
      $(this).change(function(){calculate(this)});
    });
    
  };

})(jQuery);