如题,我想对输入金额的文本框进行验证,如何实现?最好是客户端实现

解决方案 »

  1.   

    regularExpressionValidator控件 用 正则表达式
    好像这样: ([0-9]{0,})|([0-9]{0,}.[0-9]{0,3})
      

  2.   

    楼上的,没有反映,弹不出警告!
    <head runat="server">
        <script language="javascript" type="text/javascript">
    function NumberOnly()
        {
            if (^\d+(.\d{1,3})?$ )
            
                    alert("单价或总价只能是数字和小数点,请重新输入!");
                    event.returnValue = false;
               
        }
        </script>
    </head><asp:TextBox runat ="server" ID ="TextBox12" Width ="120"></asp:TextBox>后台:
     TextBox12.Attributes.Add("onkeypress", "NumberOnly()")
      

  3.   

    不是那样用的
    添加一个验证expression的那个控件
    在他的判断表达式的一个属性里写入正则表达式
    就可以了
    是在客户端验证的
      

  4.   

    添加一个regularExpressionValidator控件
    然后在ValidationExpression属性里填上^\d+(.\d{1,3})?$
      

  5.   

    那么,换用这种方法,小数点的keycode是多少?function NumberOnly()
        {
            if (event.keyCode < 48 || event.keyCode >57) 
                {
                    alert("只能是数字,请重新输入!");
                    event.returnValue = false;
                }
        }
      

  6.   

    现在,解决了数字和小数点问题:
    function NumberOnly(TB)
        {
            if ( event.keyCode !=46 && (event.keyCode < 48 || event.keyCode >57 ))
                {
                    alert("单价或总价只能是数字和小数点,请重新输入!");
                    event.returnValue = false;
                }
            else
                if ( TB.indexOf(".") > 1 )
                    {
                                alert("只能有1个小数点,请重新输入!");
                        event.returnValue = false;
                            }
        }但是,对于判断小数点只能有一个,却不行,还请指教。现在的是只要输入数字或小数点,救弹出:("只能有1个小数点,请重新输入!"),直到数字改成8,救什么也不弹出,哪怕小数点输入了好几个
      

  7.   

    if ( TB.indexOf(".") != -1 )
     {
        var strs = TB.split(".");
        alert(strs.length);//这里就可以知道字符串中存在几个.了
     }
      

  8.   

    用这个,结果是不管输入什么都弹出错误警告!                    var myreg=/^[0-9]*[1-9][0-9]*$ /;
                        
                        if(myreg.test(obj.value)== false)
                            {
                                alert('错误');
                               // obj.value='';
                                event.returnValue = false;
                            }
                    }
    据说是因为 obj.value 是字符型的,和正则的数字不能比较
      

  9.   

    谢谢楼上的。可是,还是不行!前台:
    function NumberOnly(TB){
        var str=parseFloat("TB.value");
        var myreg=/^\d+(.\d{1,3})?$/;
        if(myreg.test(str)){
             alert('ok');
             event.returnValue = false;
              }
        else
             {
              alert("不符合标准");
              }
        }后台:
    TextBox12.Attributes.Add("onkeypress", "NumberOnly('TextBox12.ClientID')")不管 TextBox12 输入什么,都弹出:("不符合标准")
      

  10.   

    以下是一种比较笨的做法.<!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><script>
    function DoValidate()
    {
    var oText = document.all["txt"];
    var oValue = document.all["txt"].value; if(oValue.indexOf(".") != -1)
    {
    var str = oValue.split(".");
    if(str.length > 2 || oValue.substr(0,1) == ".")
    {
    alert("输入格式有误");
    DoFocus(oText);
    return false;
    }

    str = oValue.substr(oValue.indexOf(".") + 1);
    if(str.length > 3)
    {
    alert("小数点后只能保留3位小数");
    DoFocus(oText);
    return false;
    }
    } alert("输入正确"); return true;
    } function DoFocus(obj)
    {
    obj.focus();
    obj.select();
    }</script>
    <BODY>
    <input type="text" onkeypress="return event.keyCode>=48&amp;&amp;event.keyCode<=57||event.keyCode==46"
    onpaste="return !isNaN(clipboardData.getData('text'))" ondragenter="return false" style="IME-MODE: disabled" id="txt" ></br>
    <input type="button" onclick="return DoValidate();" value="submit">
    </BODY>
    </HTML>
      

  11.   

    <script language="javascript">
     function ss()
     {
       var m1=document.getElementById("t1");
       var re=/^\d+(.\d{1,3})?$/;
       if(re.test(m1.value))
       {
         window.alert("对!");
       }
       else
       {
         window.alert("错误!");
       }
     }
    </script>
    <INPUT type="text" id=t1></FONT>
    <INPUT  type="button" value="Button" onclick="ss()">
      

  12.   

    加一个验证控件挺简单
    <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="请输入正确的格式" ValidationExpression="^\d+(.\d{1,3})?$" ControlToValidate="TextBox1"></asp:RegularExpressionValidator>
      

  13.   

    你到底是不是用asp.net啊?
    用的话,页面上就加一个RegularExpressionValidator 控件,
    ValidationExpression 里面加表达式,  (\d{1,})|(\d{1,}.\d{1,3})
    ControlToValidate里面选中要验证的控件。验证过程保证全部是在客户端运行的。验证成功才会允许提交,否则不会提交的,放心好了。
      

  14.   

    NickLee.WEb.UI.NumberBox用专门控件就可以了
    www.cnblogs.com/mail-ricklee下载。
      

  15.   

    还是我的方法好哦function _MaskInput(oInput, sReg, sInputStr)
    {
    var re = new RegExp(sReg);
    var docSel = document.selection.createRange();
    if(docSel.parentElement().tagName.toLowerCase() != "input")
    return false;
    oSel = docSel.duplicate();
    oSel.text = "";
    var srcRange = oInput.createTextRange();
    oSel.setEndPoint("StartToStart", srcRange);
    var str = oSel.text + sInputStr + srcRange.text.substr(oSel.text.length);
    //alert(str);
    //alert(re.test(str));
    return re.test(str);
    }
    // only number
    //bSign 是否可以输入'-'
    //nInt  小数点前的位数  nDec小数点后的位数
    function _SetDigitalInput(oInput,nInt,nDec,bSign)
    {
    if(typeof(bSign) != "boolean")
    bSign = false;
    oInput.style.imeMode = "disabled";
    var sReg = "^";
    if(bSign)
    sReg += "-?(";
    sReg += "\\\\d{1,"+nInt.toString()+"}";
    if(nDec > 0)
    sReg += "(\\\\.\\\\d{0,"+nDec.toString()+"})?";
    if(bSign)
    sReg += ")?";
    sReg += "$";
    oInput.onkeypress = new Function("return _MaskInput(this,'"+sReg+"',String.fromCharCode(event.keyCode))");
    oInput.onpaste = new Function("return _MaskInput(this,'"+sReg + "',window.clipboardData.getData('Text'))");
    oInput.ondrop = new Function("return _MaskInput(this,'"+sReg + "',event.dataTransfer.getData('Text'))");
    }例:
    <input type=text onkeypress="_SetDigitalInput(this, 5, 3, false);">
      

  16.   

    呵呵!如果你用VS2005的话,有一个CompareValidator控件,其中有个属性Type,可取值为Currency,就可以验证货币类型了!
      

  17.   

    to:szc21(if(开源||免费){return 支持}) 你的有问题,第一次输入“.” 会提示错误,当输入第二个“.” 却又对了
      

  18.   

    to: xiedan79(Sam Xie)你的可以,谢谢!不过,我想在输入错误的时候加个弹出的提示,加载哪里?
      

  19.   

    你看到
    return re.test(str);
    这句代码了么?
    re.test(str) 是用来判断的
    你可以把 return re.test(str); 换成下面的代码var bRe = re.test(str);
    if(bRe)
        return true;
    else
    {
        alert("......");
        return false;
    }