zoukankan      html  css  js  c++  java
  • 【转载】 input 和 textarea 最大文字限定插件

    /* input 和 textarea 最大文字限定插件
     * 修改版, 一个中文表示1一个字, 一个英文半个字;
     * TextLimit - jQuery plugin for counting and limiting characters for input and textarea fields
     
     * pass '-1' as speed if you don't want the char-deletion effect. (don't just put 0)
     * Example: jQuery("Textarea").textlimit('span.counter',256)
     *
     * $Version: 2009.07.25 +r2
     * Copyright (c) 2009 Yair Even-Or
     * vsync.design@gmail.com
    */
    String.prototype.getBytes = function () {
        var cArr = this.match(/[^\x00-\xff]/ig);
        return this.length + (cArr == null ? 0 : cArr.length);
    };
    (function(jQuery) {
        jQuery.fn.textlimit=function(counter_el, thelimit, speed) {
            var charDelSpeed = speed || 15;
            var toggleCharDel = speed != -1;
            var toggleTrim = true;
            var that = this[0];
            var isCtrl = false
            updateCounter();
              
            function updateCounter(){
                if(typeof that == "object")
                    jQuery(counter_el).text(thelimit - Math.ceil(that.value.getBytes()/2));
            };
              
            this.keydown (function(e){ 
                if(e.which == 17) isCtrl = true;
                var ctrl_a = (e.which == 65 && isCtrl == true) ? true : false; // detect and allow CTRL + A selects all.
                var ctrl_v = (e.which == 86 && isCtrl == true) ? true : false; // detect and allow CTRL + V paste.
                // 8 is 'backspace' and 46 is 'delete'
                if( this.value.length >= thelimit && e.which != '8' && e.which != '46' && ctrl_a == false && ctrl_v == false)
                    e.preventDefault();
            })
            .keyup (function(e){
                updateCounter();
                if(e.which == 17)
                    isCtrl=false;
      
                if( this.value.length >= thelimit && toggleTrim ){
                    if(toggleCharDel){
                        // first, trim the text a bit so the char trimming won't take forever
                        // Also check if there are more than 10 extra chars, then trim. just in case.
                        if ( (this.value.length - thelimit) > 10 )
                            that.value = that.value.substr(0,thelimit+100);
                        var init = setInterval
                            
                                function(){ 
                                    if( that.value.length <= thelimit ){
                                        init = clearInterval(init); updateCounter() 
                                    }
                                    else{
                                        // deleting extra chars (one by one)
                                        that.value = that.value.substring(0,that.value.length-1); jQuery(counter_el).text(Math.ceil(that.value.getBytes()/2));
                                    }
                                } ,charDelSpeed 
                            );
                    }
                    else this.value = that.value.substr(0,thelimit);
                }
            });
              
        };
    })(jQuery);
  • 相关阅读:
    Android 开发 深入理解Handler、Looper、Messagequeue 转载
    Android 开发 Handler的基本使用
    Java 学习 注解
    Android 开发 AlarmManager 定时器
    Android 开发 框架系列 百度语音合成
    Android 开发 框架系列 Google的ORM框架 Room
    Android 开发 VectorDrawable 矢量图 (三)矢量图动画
    Android 开发 VectorDrawable 矢量图 (二)了解矢量图属性与绘制
    Android 开发 VectorDrawable 矢量图 (一)了解Android矢量图与获取矢量图
    Android 开发 知晓各种id信息 获取线程ID、activityID、内核ID
  • 原文地址:https://www.cnblogs.com/fx2008/p/2298279.html
Copyright © 2011-2022 走看看