TextMode="MultiLine" 文本框为区域时,用MaxLength不能控制输入文字字数问题

来源:互联网 发布:淘宝达人平台管理规范 编辑:程序博客网 时间:2024/05/16 06:58

网上找的方法,不记得链接了. 控件件增加属性length='x'即可.

 

<script>
<!--
    //控制多行文本框输入字数
    String.prototype.len=function()
    { 
        return this.replace(/[^/x00-/xff]/g,"**").length; 
    } 
    
    //Set maxlength for multiline TextBox 
    function setMaxLength(object,length) 
    {
        
        var result = true; 
        var controlid = document.selection.createRange().parentElement().id; 
        var controlValue = document.selection.createRange().text; 
        var tempString=object.value;
        
        var tt=""; 
        for(var i=0;i<length;i++) 
            { 
                if(tt.len()<length) 
                    tt=tempString.substr(0,i+1); 
                else 
                    break; 
            } 
        if(tt.len()>length)
            tt=tt.substr(0,tt.length-1);
        object.value=tt;
        
        
    } 
    
    //Check maxlength for multiline TextBox when paste 
    function limitPaste(object,length) 
    { 
            var tempLength = 0; 
            if(document.selection) 
            { 
                if(document.selection.createRange().parentElement().id == object.id) 
                { 
                    tempLength = document.selection.createRange().text.len(); 
                } 
            } 
            var tempValue = window.clipboardData.getData("Text"); 
            tempLength = object.value.len() + tempValue.len() - tempLength; 
    
            if (tempLength > length) 
            { 
                tempLength -= length; 
                var tt=""; 
                for(var i=0;i<tempValue.len()-tempLength;i++) 
                    { 
                        if(tt.len()<(tempValue.len()-tempLength)) 
                            tt=tempValue.substr(0,i+1); 
                        else 
                            break; 
                    } 
                if(tt.len()<=0)
                {    
                    window.event.returnValue=false;
                    
                }
                else
                {
                    tempValue=tt; 
                    window.clipboardData.setData("Text", tempValue); 
                    window.event.returnValue = true; 
                }
            } 
        
    
    } 
    
    function PressLength()
    {
        
        if(event.srcElement.type=="text" || event.srcElement.type=="textarea" )
        {
            if(event.srcElement.length!=null)
                setMaxLength(event.srcElement,event.srcElement.length);
            
        }
    }
    
    function LimitLength()
    {
    
        if(event.srcElement.type=="text" || event.srcElement.type=="textarea" )
        {
            if(event.srcElement.length!=null)
                limitPaste(event.srcElement,event.srcElement.length);
        }
    }
    document.documentElement.attachEvent('onkeyup', PressLength); 
    document.documentElement.attachEvent('onpaste', LimitLength);
 
    //-->     
    </script>