<form name=form1 onsubmit=return(ma())>
<input type=text name=text1>
<input type=submit value=提交>
</form>
<script language=javascript>
function ma()
{
if(!form1.text1.value.match(/^[a-zA-Z]{1,16}$|^[\u4e00-\u9fa5]{1,8}$/))
{
alert("请输入汉字或英文,汉字不可超过8个,英文不可超过16个!")
return false
}
}
</script>

解决方案 »

  1.   

    我现在想要解决的问题是:如何让文本框只能输入16为字母或者8位汉字,而不能输入汉字时超过8位?
    -----------------
    如果你想这样,那么你就必须实时监控你的输入框的动作,比如在你的onkeydown或是onblur事件,随时测试当前字数,发现过长,则提醒或切断.
      

  2.   

    实时检测文本框输入字节长度:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <META NAME="Author" CONTENT="Seagle.K">
    <SCRIPT LANGUAGE="JavaScript">
    function limitTxtByte(o, len)
    {
    var str = o.value;
    var rscn = /^[\u4E00-\u9FA5]$/i;
    var ach;
    var rsstr = '';
    var count = 0;
    for (var i=0; i<str.length; i++)
    {
    ach = str.substr(i, 1);
    if (rscn.test(ach))
    {
    if (count+2 <= len)
    {
    count += 2;
    }else
    {
    break;
    }
    }else
    {
    if (count+1 <= len)
    {
    count += 1;
    }else
    {
    break;
    }
    }
    rsstr += ach;
    } if (rsstr != str)
    {
    o.value = rsstr;
    }
    }
    </SCRIPT>
    </HEAD>
    <BODY>
    只能输入16个字节内容的文本框:
    <INPUT TYPE="text" name="txt" onpropertychange="limitTxtByte(this, 16)">
    </BODY>
    </HTML>
      

  3.   

    to majiming:非常感谢你提供的代码,但是很遗憾没有办法满足我的要求!谢谢!同时感谢hchxxzx的提示。
    to  seeu1688(kangel) :非常感谢你提供的代码,但是在测试中发现只要我输入8个以上的汉字windows系统就会自动报错并关闭ie,不知道如何去解决着个问题?还望赐教?!谢谢!
      

  4.   

    我测试了一下
    IE5.01
    似乎会让这段代码出错,可能是ie5的bug所致
    ie5.5+以上环境是正常的
      

  5.   

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <META NAME="Generator" CONTENT="EditPlus">
    <META NAME="Author" CONTENT="">
    <META NAME="Keywords" CONTENT="">
    <META NAME="Description" CONTENT="">
    </HEAD><BODY>
    <input type=text name=text1 onkeydown="return(f(this));">
    </BODY>
    </HTML>
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function f(obj)
    {
    if(GetLen(obj.value) >=10)
    {
    return(false);
    }
    }//功能:取得字符串的实际长度,汉字取2,半角字母取1,累加而成
    //str 要计算的文本
    function GetLen(str)
    {
    var len = 0;
    for(i=0; i<str.length; i++)
    {
    if(str.charCodeAt(i)>255)
    len += 2 ;
    else
    len++ ;
    }
    return len;
    }
    //-->
    </SCRIPT>