jquery.maxlength.js

来自「jQuery即学即用」· JavaScript 代码 · 共 98 行

JS
98
字号
/*  @author: remy sharp / http://remysharp.com  @params:    feedback - the selector for the element that gives the user feedback. Note that this will be relative to the form the plugin is run against.    hardLimit - whether to stop the user being able to keep adding characters. Defaults to true.    useInput - whether to look for a hidden input named 'maxlength' instead of the maxlength attribute. Defaults to false.    words - limit by characters or words, set this to true to limit by words. Defaults to false.  @license: Creative Commons License - ShareAlike http://creativecommons.org/licenses/by-sa/3.0/  @version: 1.2  @changes: code tidy via Ariel Flesler and fix when pasting over limit and including \t or \n*/(function ($) {$.fn.maxlength = function (settings) {    if (typeof settings == 'string') {        settings = { feedback : settings };    }    settings = $.extend({}, $.fn.maxlength.defaults, settings);    function length(el) {    	var parts = el.value;    	if ( settings.words )    		parts = el.value.length ? parts.split(/\s+/) : { length : 0 };    	return parts.length;    }        return this.each(function () {        var field = this,        	$field = $(field),        	$form = $(field.form),        	limit = settings.useInput ? $form.find('input[name=maxlength]').val() : $field.attr('maxlength'),        	$charsLeft = $form.find(settings.feedback);    	function limitCheck(event) {        	var len = length(this),        	    exceeded = len >= limit,        		code = event.keyCode;        	if ( !exceeded )        		return;            switch (code) {                case 8:  // allow delete                case 9:                case 17:                case 36: // and cursor keys                case 35:                case 37:                 case 38:                case 39:                case 40:                case 46:                case 65:                    return;                default:                    return settings.words && code != 32 && code != 13 && len == limit;            }        }        var updateCount = function () {            var len = length(field),            	diff = limit - len;            $charsLeft.html( diff || "0" );            // truncation code            if (settings.hardLimit && diff < 0) {            	field.value = settings.words ?             	    // split by white space, capturing it in the result, then glue them back            		field.value.split(/(\s+)/, (limit*2)-1).join('') :            		field.value.substr(0, limit);                updateCount();            }        };        $field.keyup(updateCount).change(updateCount);        if (settings.hardLimit) {            $field.keydown(limitCheck);        }        updateCount();    });};$.fn.maxlength.defaults = {    useInput : false,    hardLimit : true,    feedback : '.charsLeft',    words : false};})(jQuery);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?