aspx.net webform里面的textbox控件,只能输入小数点和数字,在网上搜了一堆,也没有理想的,请大家帮帮忙,多谢了!附一个例子(不完善的),可以输入数字和小数点,但只能在英文输入法下使用,换成中文输入法就不行了,另外没有限制小数点的个数和屏蔽粘贴过来的中文字符。<asp:TextBox ID="TBMoney" runat="server" Width="320px" onkeypress="isnum()"></asp:TextBox>
<script type ="text/jscript" language="javascript">
   function isnum()
   {
      if(event.keyCode==47 || event.keyCode<46 || event.keyCode>57)
      {
         event.keyCode=0;
       }
   }       
</script>

解决方案 »

  1.   


            function clearNoNum(id) {
                if (isNaN($(id).value) || ($(id).value.length > 1 && $(id).value.substr(0, 1) == "0" && $(id).value.substr(1, 1)!=".")) {
                    //先把非数字的都替换掉,除了数字和.-
                    $(id).value = $(id).value.replace(/[^\d.-]/g, "");
                    //必须保证第一个为数字而不是.
                    $(id).value = $(id).value.replace(/^\./g, "");
                    //保证只有出现一个.而没有多个.
                    $(id).value = $(id).value.replace(/\.{2,}/g, ".");
                    //保证.只出现一次,而不能出现两次以上
                    $(id).value = $(id).value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".").replace("-", "$##$").replace(/\-/g, "").replace("$##$", "-");                if ($(id).value.indexOf('.') >= 0)//包括 "."
                    {
                        var zShu = $(id).value.split('.')[0];
                        var xShu = $(id).value.split('.')[1];
                        if (zShu.length == 1) { }
                        else if (zShu.length == 2) {
                            if (zShu.substr(0, 1) == "0") {
                                if (zShu.substr(1, 1) == "0") {
                                    $(id).value = "0" + $(id).value.substr(2);
                                }
                                else {
                                    $(id).value = $(id).value.substr(1);
                                }
                            }
                        }
                        else {
                            var control = "0";
                            for (var i = 1; i <= zShu.length; i++) {
                                if (zShu.substr(0, i) == control) {
                                    if (i == zShu.length) {
                                        $(id).value = $(id).value.substr(i - 1); break;
                                    }
                                    else
                                        control += "0";
                                }
                                else {
                                    $(id).value = $(id).value.substr(i - 1);
                                    break;
                                }
                            }
                        }
                        if (xShu.length == 1)
                            $(id).value = $(id).value + "0";
                        if (xShu.length > 2)
                            $(id).value = $(id).value.split('.')[0] + "." + xShu.substr(0, 2);
                    }
                    else {
                        var zShu = $(id).value;
                        if (zShu.length == 1) { }
                        else if (zShu.length == 2) {
                            if (zShu.substr(0, 1) == "0") {
                                if (zShu.substr(1, 1) == "0") {
                                    $(id).value = "0" + $(id).value.substr(2);
                                }
                                else {
                                    $(id).value = $(id).value.substr(1);
                                }
                            }
                        }
                        else {
                            var control = "0";
                            for (var i = 1; i <= zShu.length; i++) {
                                if (zShu.substr(0, i) == control) {
                                    if (i == zShu.length) {
                                        $(id).value = $(id).value.substr(i - 1); break;
                                    }
                                    else
                                        control += "0";
                                }
                                else {
                                    $(id).value = $(id).value.substr(i - 1); break;
                                }
                            }
                        }
                        $(id).value = $(id).value + ".00";
                    }
                    var x = id.substr(id.length - 1);
                    var arrList = $("hf_ProjInfoList").value.split('|')[x - 1];                $(id).value = switchRoundtype($(id).value, arrList.split(';')[3]);
                }
            }        function switchRoundtype(value, roundtype) {
                var xvalue = value.split('.')[1];
                if (roundtype == "2")//小数全舍
                {
                    value = value.split('.')[0] + ".00";
                }            if (roundtype == "3")//小数全入
                {
                    if (xvalue != "00") {
                        var inumber = parseInt(value.split('.')[0]) + 1;
                        value = (parseInt(value.split('.')[0]) + 1) + ".00";
                    }
                }
                return value;
            }建议:最好不要用onkeypress而用onkeyup.火狐下用oninput
      

  2.   

     if (isNaN($(id).value) || ($(id).value.length > 1 && $(id).value.substr(0, 1) == "0" && $(id).value.substr(1, 1)!=".")) {
                    //先把非数字的都替换掉,除了数字和.-
                    $(id).value = $(id).value.replace(/[^\d.-]/g, "");
                    //必须保证第一个为数字而不是.
                    $(id).value = $(id).value.replace(/^\./g, "");
                    //保证只有出现一个.而没有多个.
                    $(id).value = $(id).value.replace(/\.{2,}/g, ".");
                    //保证.只出现一次,而不能出现两次以上
                    $(id).value = $(id).value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".").replace("-", "$##$").replace(/\-/g, "").replace("$##$", "-"); 发这么多只是觉得你可能会用到后面那些
      

  3.   

    自己写一个javascript函数来验证
      

  4.   


                if (!(Char.IsNumber(e.KeyChar) || e.KeyChar == '\b' || e.KeyChar == '.'))
                {
                    e.Handled = true;
                }
    KeyPress事件写这些代码isNumber 只接受数字不包括小数点
    然后把小数点加进去就行了
      

  5.   


    e.KeyChar == '\b'
    允许接收 backspace键
      

  6.   

    <asp:RegularExpressionValidator ID="rev10" runat="server" 
        ControlToValidate="txt_maxZJF"  ErrorMessage="应为数值" 
              ValidationExpression="^[1-9][0-9]{0,1}(\.\d{1,2})*$
    "> </asp:RegularExpressionValidator>
      

  7.   

    LZ说的是ASP.NET啊
    有一种控件叫做验证控件
      

  8.   

    asp.net ajax toolkit有这类现成控件:http://www.asp.net/AJAX/AjaxControlToolkit/Samples/FilteredTextBox/FilteredTextBox.aspx
      

  9.   

    把AjaxControlTookit.dll放入vs的工具箱,在开发时直接把这个控件拖到TextBox上然后简单地设置属性就好啦,真是方便。