客户端判断:用isNaN服务器端判断:用isnumeric

解决方案 »

  1.   

    这个function当初写得比较乱,没时间改一下,将就着用一下
    <asp:TextBox onkeydown ="javascript:reuturn CheckInputNumber(10,2,true);"  function CheckInputNumber(iLength,iDeciLength,iAllowZeroCapital)
    {
    event.cancelBubble =true;

    /*if(event.keyCode ==13) 
    { event.keyCode =9;
    return 
    }*/

    var sClipBoardText = window.clipboardData.getData("Text");
    if (sClipBoardText==null )
    sClipBoardText ="";
    if(event.ctrlKey )
    {
    if(event.keyCode == 67  ||event.keyCode ==99||event.keyCode ==10 || event.keyCode ==13) // Ctrl + C
    {
    return true;
    }
    if(!isNaN(sClipBoardText) && sClipBoardText.length<=iLength)
    {
    return true;
    }

    return false;
    }


    if (iDeciLength>0 && iLength<3 ) return false; 

    if(event.keyCode == 9 ) return true;

    var c = String.fromCharCode(event.keyCode);
    var keyCodeAry = new Array(96,97,98,99,100,101,102,103,104,105)
    var keyCode = event.keyCode;
    var specialKeyAry = new Array(13,27,8,46,35,36,37,38,39,40);
    if (itemInAry(specialKeyAry,keyCode)) return true;

    var text= event.srcElement.value;

    if(document.selection.createRange().text==text && event.keyCode !=9)
    {
    event.srcElement.value ="";
    text ="";
    event.srcElement.focus();
    }
    //get text cursor position
    var obj = window.event.srcElement;
    var s=document.selection.createRange();
    s.setEndPoint("StartToStart",obj.createTextRange())
    var pos = s.text.length;


    if((isNaN(c)||keyCode==32 ||event.shiftKey) &&  !itemInAry(keyCodeAry,keyCode))
    {
    if ( text.indexOf(".",0)==-1 &&(iLength>0) &&  (keyCode ==110||(keyCode==190 && !event.shiftKey)) )
        {
    if(pos == text.length && (iLength-text.length)<2 && document.selection.createRange().text!=text)
    {
    return false;
    }else{}

        }else 
          return false;
    if (iDeciLength==0) return false;
    }

    if(text.length==iLength && !(document.selection.createRange().text==text) ) return false; //max length and not hightlight


    if(pos ==0 && (keyCode==110||(keyCode==190 && !event.shiftKey))  && text.length<iLength-1)
    {
    obj.value = "0.";
    return false;;
    }

    if(pos ==0 && iDeciLength>0 && text=="" && (c=="0"||keyCode==96))
    {
    obj.value ="0.";
    return false;
    }

    if( (c=="0"||keyCode==96) && iDeciLength<=0 &&pos==0 && iAllowZeroCapital!=1)
    {
    return false;
    }

    var zeroPos = text.indexOf(".");
    if(zeroPos>0 && pos > zeroPos)
    {
    if (text.length-zeroPos-1 ==iDeciLength) return false;
    }

    //alert(pos.length);



    return true;
    }
      

  2.   

    为什么不使用验证控件?
    http://chs.gotdotnet.com/quickstart/aspplus/doc/webvalidation.aspx
      

  3.   

    只能输入数据表达式:<asp:RegularExpressionValidator ID="checkInput" Runat="server" ControlToValidate="TextBox1" ValidationExpression="[0-9]*" ErrorMessage="密码只能输入字母和数字" Display="Dynamic" />
      

  4.   


    try
    {
    int i = int.Parse(TextBox.text);
    }
    catch
    {
    //如果不是数字...
    }
      

  5.   

    两种方法,一种是正则表达式,比较高效
    另一种是采用容错:try{}catch{}来处理
      

  6.   

    给你写了一个方法
    /// <summary>
    /// 名称:IsNumberic
    /// 功能:判断输入的是否是数字
    /// 参数:string oText:源文本
    /// 返回值: bool true:是 false:否
    /// </summary>

    public bool IsNumberic(string oText)
    {
    try
    {
    int var1=Convert.ToInt32 (oText);
    return true;
    }
    catch
    {
    return false;
    }
    }
      

  7.   

    for(int i=0;i<TextBox1.text.length;i++)
    {
       if(char.isnumber(TextBox1.text[i])!=true)
        {
             Label1.text="您输入的不完全是数字";
        }
        else
        {
             
             Label1.text="您输入的完全是数字";
    }
      

  8.   

    限制输入
       在TextBox1的Onchange事件里写
        for(int i=0;i<TextBox1.text.length;i++)
        {
          if(char.isnumber(TextBox1.text[i])!=true)
           {
               Response.Write("<script>alert('请您输入数字');</script>");
               break;
           }
        }