一个文本框输入10个字符,且只能输入5个汉字
<input   type=text   name=txt  onkeypress="return cc(this);" maxlength="10"> <br />
<input   type=button   value=ok> 
<script   language=javascript>
function   cc(txtname) 
{
var j=0;
var s = txtname.value;
for(var i=0;i<s.length;i++)
{
var temp = s.substr(i,1);
if(temp.length != temp.replace(/[^\x00-\xff]/g,"**").length)
j=j+2;
else
j++;
}
if(j>=10){
alert("长度超过最大范围");
return false;
}

</script>现在的问题是:当一直输入汉字时没触发onkeypress()事件,不起作用,,各位高手有没有别的办法呀??

解决方案 »

  1.   

    onkeydown="return cc(this);"
    lz 记得结贴哈
      

  2.   

    用onkeydown事件
    同时在input标签里面最好加上value=""
      

  3.   

    当然没有L@_@K
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title> new document </title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="[email protected]" />
        <meta name="keywords" content="" />
        <meta name="description" content="" />
    </head>
    <body>
    <input type=text name=txt onkeydown="return cc(this);"> <br />
    <input type=button value=ok>  
    <script language=javascript>
    function cc(txtname)  
    {
        var deleteKeyCode = 46;
        var backspaceKeyCode = 8;
        if (event.keyCode != deleteKeyCode && event.keyCode != backspaceKeyCode)
        {
            var j=0;
            var s = txtname.value;
            for(var i=0;i<s.length;i++)
            {
                var temp = s.substr(i,1);
                if(temp.length != temp.replace(/[^\x00-\xff]/g,"**").length)
                j=j+2;
                else
                j++;
            }
            if(j>=10){
                alert("长度超过最大范围");
                return false;
            }
        }
    }  
    </script></body>
    </html>
      

  4.   

    Web 开发常用手册DHTML 参考手册
    http://download.csdn.net/source/308913JScript 语言参考
    http://download.csdn.net/source/308916CCS 样式表中文手册
    http://download.csdn.net/source/304124
      

  5.   

    楼7  yixianggao呵呵,还能不能完善一下。。 就是除了删除之外,我想选中文本框的值直接改动。
      

  6.   

    把退格键屏蔽掉不就可以了
    if(event.key==10) return false;
      

  7.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title> new document </title>
        <meta name="generator" content="editplus" />
        <meta name="author" content="[email protected]" />
        <meta name="keywords" content="" />
        <meta name="description" content="" />
    </head>
    <body>
    <input type=text name=txt onkeydown="return cc(this);"> <br />
    <input type=button value=ok>  
    <script language=javascript>
    function cc(txtname)  
    {
        var deleteKeyCode = 46;
        var backspaceKeyCode = 8;
    //alert("你按的键值是:"  + event.keyCode);
    //条件:按键不等于shift、home、end,要什么继续加,根据上面的keycode就知道键码了
        var w = event.keyCode != 16 && event.keyCode != 35  && event.keyCode != 36;
        if (event.keyCode != deleteKeyCode && event.keyCode != backspaceKeyCode && w)
        {
            var j=0;
            var s = txtname.value;
            for(var i=0;i<s.length;i++)
            {
                var temp = s.substr(i,1);
                if(temp.length != temp.replace(/[^\x00-\xff]/g,"**").length)
                j=j+2;
                else
                j++;
            }
            if(j>=10){
                alert("长度超过最大范围");
                return false;
            }
        }
    }  
    </script></body>
    </html>
    可以全选了,lz要什么可以进行在w后加的
      

  8.   

    提供一个方法,ie:onperprotychange
    w3c oninput,
    代码不写了,可以满足你的要求!
      

  9.   

    onperprotychange没用过。。能举个例子不??
    就一个文本框,让他输入10个字符。纯汉字就只能是5个。可以从记事本中复制。。谢谢
      

  10.   

    <input type="text" name="week" oninput="checkStr(this, 10);" />
    <script type="text/javascript" >
    function checkStr(obj,len){
        var str = obj.value;
        var ln = str.length;
        var len = len;
        for(var i=0;i<len;i++){
            if(/[\u4e00-\u9fa5]/.test(str.charAt(i))){
                len--;
                if(ln <= i) break;
            }
        }
        if(ln > len){
            str = str.substr(0, len);
        }
        document.getElementsByName("week")[0].value = str;
    }
    </script>
    刚开会去了,不好意思