mirror of
https://github.com/Oreolek/ifhub.club.git
synced 2024-07-08 01:14:24 +03:00
59 lines
1.5 KiB
JavaScript
59 lines
1.5 KiB
JavaScript
|
/*
|
||
|
* Character Count Plugin - jQuery plugin
|
||
|
* Dynamic character count for text areas and input fields
|
||
|
* written by Alen Grakalic
|
||
|
* http://cssglobe.com/post/7161/jquery-plugin-simplest-twitterlike-dynamic-character-count-for-textareas
|
||
|
*
|
||
|
* 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);
|