用onkeypress控制输入类型难度有点高
还有就是不能阻止用户向输入框Copy+Paste不符要求的内容。
若禁止Copy+Paste又带给用户不乐意的限制-----个人之见

解决方案 »

  1.   

    前几天做了这个东西,可以限制输入---------------------------------------
    <style>
    input
    {
    border:1px solid black;
    }
    </style>
    <SCRIPT language="javascript">
    <!--start
    /*
     * added by LxcJie 2004.6.11
     * 约束输入框的内容
     * 适用于IE5.0及以上版本
     * oObj: 输入框控件对象
     * reg:  正则表达式
     * isChinese:是否允许打开输入法,true 允许打开,即允许输入中文,false 不能打开,默认为不允许打开
     * usage:
     *
     *   //只能输入数字和大小写字母
     * <BODY onLoad="regInputRestriction(document.all.txt,/^[0-9a-zA-Z]*$/)">
     * <input id="txt">
     *  </BODY>
     */
    function regInputRestriction(oObj,reg,isChinese)
    {
    function regInput(obj, reg, inputStr)
    {
    var docSel = document.selection.createRange();
    if (docSel.parentElement().tagName.toLowerCase() != "input")
    return false;
    oSel = docSel.duplicate();
    oSel.text = "";
    var srcRange = obj.createTextRange();
    oSel.setEndPoint("StartToStart", srcRange);
    var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
    return reg.test(str);
    }
    //限制输入法是否允许打开
    if(isChinese == null)
    isChinese = false;
    if(isChinese)
    oObj.style.imeMode = "auto";
    else
    oObj.style.imeMode = "disabled";

    //注册事件
    oObj.onkeypress = function()
    {
    return regInput(this,reg,String.fromCharCode(event.keyCode));//输入时激发
    }
    oObj.onpaste = function()
    {
    return regInput(this,reg,window.clipboardData.getData('Text'));//粘贴时激发
    }
    oObj.ondrop = function()
    {
    return regInput(this,reg,event.dataTransfer.getData('Text'));//拖拽时激发
    }
    }
    //-->
    </SCRIPT>
    <script language="javascript">
    function initForm()
    {
    regInputRestriction(document.all.onlyNumber,/^[0-9]*$/);
    regInputRestriction(document.all.lowerLetter,/^[a-z]*$/);
    regInputRestriction(document.all.upperLetter,/^[A-Z]*$/);
    regInputRestriction(document.all.letter,/^[a-zA-Z]*$/);
    regInputRestriction(document.all.numberLetter,/^([0-9a-zA-Z])*$/);
    regInputRestriction(document.all.chinese,/^[\u4E00-\u9FA5]*$/,true);
    regInputRestriction(document.all.twoDigFloat,/^\d*\.?\d{0,2}$/ );
    regInputRestriction(document.all.dateNum,/^\d{1,4}([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/);
    regInputRestriction(document.all.partEn,/^[a-e]*$/);
    regInputRestriction(document.all.notSpecialLetter,/^[^|#]*$/);
    }
    </script>
    <BODY onLoad="initForm()" style="font-size:12px;">
    <INPUT id="onlyNumber"> 只能输入数字<br><br>
    <INPUT id="lowerLetter"> 只能是小写字母<br><br>
    <INPUT id="upperLetter"> 只能是大写字母<br><br>
    <INPUT id="letter"> 只能是字母<br><br>
    <INPUT id="numberLetter"> 只能是字母数字<br><br>
    <INPUT id="chinese"> 只能是中文(bug:紫光拼音可以输入英文)<br><br>
    <INPUT id="twoDigFloat"> 只能是两位小数<br><br>
    <INPUT id="dateNum"> 只能是日期型<br><br>
    <INPUT id="partEn"> 是部分英文(a-e)<br><br>
    <INPUT id="notSpecialLetter"> 不能输入 # 和 |<br><br>
    </BODY>-----------------------------------------
      

  2.   

    第一个问题:把onKeyPress改成onKeyUp就OK了;
    第二个问题:用对象引用的完全限定名称比较好,即document.formName.textName.value = "";
    第三个问题:正则表达式基础:
                模式,是正则表达式最基本的元素,可以很简单,也可以非常复杂。
                ^ : 特殊字符,表示模式只匹配那些以^之后的字母做开头的字符串;
                $ : 特殊字符,表示模式只匹配那些以$之前的字母做结尾的字符串;
                \t、\n、\r等表示转义字符;(如\\就表示\本身,\"表示")
                [a-z] : 匹配所有小写字母;
                [A-Z] : 匹配所有大写字母;
                [a-zA-Z] : 匹配所有字母;
                [0-9] : 匹配所有数字;
                [^X...] : 在^后面的是匹配除X...之外所有的字符;
                . : 特殊字符,表示除了换行符\n之外所有的字符;
                {X,Y} : 表示前面的字符最少出现X次,最多出现Y次;而且{0,1}与?效果相等;{0,}与*效果相等;{1,}与+效果相等;所以,综上所述,例如:
    ^\-?[0-9]*\.?[0-9]*$ : 匹配所有的小数;
    ^[^0-9].+@.+\..+$ : 匹配所有的E-Maile地址;
    也可以将模式的不同部分加以区分,如: ^([^0-9].+)@(.+)\.(.+)$
      

  3.   

    谢谢 Apexivan(最爱茉莉花) 和楼上的其他朋友大家继续给点意见好吗?
      

  4.   

    怎么判断输入的是时间格式啊22:00:00<script>
    function isTime(str)
    {
        var reg = /^(\d{1,2})(\:)(\d{1,2})\2(\d{1,2})$/;
        result = str.match(reg);
        if(result == null)return false;
        str2 = "2004\/1\/1 "+result[1]+":"+result[3]+":"+result[4];
        d = new Date(str2);
        if(isNaN(d))return false;
        else return true;
    }
    alert(isTime("25:00:20"))
    alert(isTime("22:00:00"))
    </script>
      

  5.   

    谢谢大家,特别感谢Apexivan(最爱茉莉花) ,wanghr100(灰豆宝宝.net)
    我给分了