贴一段代码,供大家参考
假如输入框要限制输入浮点型数据Number(5,4)--数据库设计表示,意即该数正数位数只能有一位,小数位数最多有四位,
我找了一段控制小数位数的代码,但是如果不输入小数,只输入整数又无法控制!<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>控制小数位数</TITLE>
<SCRIPT>
function regInput(obj, reg, inputStr)
{
var docSel = document.selection.createRange();if (docSel.parentElement().tagName != "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)
}
</SCRIPT><META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 6.00.2800.1458" name=GENERATOR>
</HEAD>
<BODY><INPUT onkeypress="return regInput(this, /^\d{0,1}\.?\d{0,4}$/,String.fromCharCode(event.keyCode))" 
onpaste="return regInput(this, /^\d{0,1}\.?\d{0,4}$/, window.clipboardData.getData('Text'))" 
ondrop="return regInput(this, /^\d{0,1}\.?\d{0,4}$/, event.dataTransfer.getData('Text'))" 
style="IME-MODE: disabled" value=""> 
</BODY>
</HTML>

解决方案 »

  1.   

    <input onkeypress="return event.keyCode>=48&&event.keyCode<=57||event.keyCode==46" onpaste="return !clipboardData.getData('text').match(/\D/)" ondragenter="return false">
      

  2.   

    http://community.csdn.net/Expert/topic/3356/3356751.xml?temp=3.544253E-02
      

  3.   

    提交时校验用这个正则,刚写的,有问题贴给我:
    function CheckNumber(shuzi,weishu)
    {  
      return new RegExp('^[+|-]*\\d{0,}(.){0,1}\\d{1,'+weishu+'}$', 'i').test(shuzi);
    }//shuzi - 校验的字符串  weishu - 小数点位数
      

  4.   

    function aa()
    {
          var a=document.form1.text1.value
          var b=a.length
          if((a%2==0|a%2==1)&a!=0)      //判断是否为数值型并不为0既只能是正负数
          {
                if(String(a).indexOf(".")!=1)
                {
                         if()
                 }
                 else
                 {              }
          }
          else
          {
          alert("您输入的不是数字")
           }
    }
      

  5.   

    大家可参考:http://www.51js.com/viewthread.php?fpage=3&tid=26320,这是我前断时间在网上发的帖子。
    大大小小也做过了好几个项目,关于提交时校验的脚本应该是没有任何问题的,现在我想做的是尽量在客户输入时做到最大程度上的控制,并且想搞出一个通用的页面控制和校验的脚本,校验方面目前问题不大,但控制方面好像还差了点,呵呵,希望各位高手不吝赐教!
    我现在做项目是通过我们自己开发的一套工具控制的,每个数据项的基本属性都已经事先定义,基本上在页面上画好控件就行了,在body的onload事件里调用一套脚本来控制页面控件的输入和属性,在form的onsubmit事件里去校验输入数据。而我想做到的就是尽量让用户只能输入合法数据,(比如像一般的数据表的编码,只允许输入字母和数字,并控制控件的maxLength),目前遇到最大的问题是浮点型数据,比如oracle数据库中定义的number(5,4),实际上要求的是整数位数最多可有5-4=1位,而小数位数可能没有,或最多有4位,如果不加输入控制,用户很容易输入两位以上的整数的,关于这个问题,还真希望和朋友们讨论讨论我的关于此问题的blog:http://blog.csdn.net/191301587/archive/2004/09/27/117838.aspx,欢迎各位高手指教
      

  6.   

    to: zhaoxiaoyang(梅雪香) :关于科学计数法,目前还没考虑过,目前基本上都是给一些大中型企业做erp,还没遇到类似要求to: ouyld(ゎたしすきぁぉた):可能你没有领会我的问题to: kingchang2000(萨那) :正则我至今还不是很清楚,不过你的校验代码好像不能校验整数位数,能不能考虑作为参数加进函数中,还有,好像测试.898也返回true值,这是不符合要求的to:gjd111686(数字金刚) :你提供的控制只能输入数字的代码我早就在用,但还是谢谢,to: fason(Forbes Pu) :高人的信誉分怎么那么高?我的问题还是没解决啊
      

  7.   

    你考虑的太周到了
    http://blog.csdn.net/letsflytogether/archive/2004/09/21/111281.aspx
      

  8.   

    通用的控制的确比较难以实现。
    我这里实现了控制时间的输入,大家可以参考一下,看能不能有所帮助。
    <script>
    function isTime(str){
      var a = str.match(/^(\d{0,4})-(\d{0,2})-(\d{0,2}) (\d{0,2}):(\d{0,2}):(\d{0,2})$/);
      if (a == null) return false;
      if (a[1]<1000 || a[2]>12 || a[3]>31 || a[4]>=24 || a[5]>=60 || a[6]>=60) return false;
      return true;
    }
    function check(obj){
    var range=obj.createTextRange(); 
    var text = range.text;
    var selrange = document.selection.createRange();
    var seltext = selrange.text;
    var startpos = 0,endpos = 0;
    while(selrange.compareEndPoints("StartToStart",range)>0){ 
      selrange.moveStart("character",-1);  
      startpos ++;
    }
    while(selrange.compareEndPoints("EndToStart",range)>0){ 
      selrange.moveEnd("character",-1);  
      endpos ++;
    }
    if(event.keyCode>=48){ 
      var keytext = String.fromCharCode(event.keyCode);
      text = text.substring(0,startpos) + keytext + text.substring(endpos,text.length);
    }else if(event.keyCode == 46){//delete
      if(startpos == endpos)text = text.substring(0,startpos) + text.substring(startpos+1,text.length);
      else text = text.substring(0,startpos) + text.substring(endpos,text.length);
    }else if(event.keyCode == 8){
      if(startpos == endpos)text = text.substring(0,startpos-1) + text.substring(startpos,text.length);
      else text = text.substring(0,startpos) + text.substring(endpos,text.length);
    }
    window.status = text;
    if(!isTime(text)){
     event.returnValue = false;
    }
    }
    </script>
    <input id="date" onkeyDown="check(this)" value="1000-00-00 00:00:00">
      

  9.   

    function CheckNumber(shuzi,zhengshu,weishu)
    {  
      return new RegExp('^[+|-]*\\d{1,'+zhangshu+'}(.){0,1}\\d{1,'+weishu+'}$', 'i').test(shuzi);
    }//shuzi - 校验的字符串  zhengshu - 整数个数 weishu - 小数点位数刚刚看见你提出的错误,我已经修正
      

  10.   

    to:kingchang2000(萨那)
    <script language="JavaScript">
    <!--
    function CheckNumber(shuzi,zhengshu,weishu)
    {  
      return new RegExp('^[+|-]*\\d{1,'+zhengshu+'}(.){0,1}\\d{1,'+weishu+'}$', 'i').test(shuzi);
    }//shuzi - 校验的字符串  zhengshu - 整数个数 weishu - 小数点位数
    alert(CheckNumber(.1,2,1))
    //-->
    </script>
    返回值竟然是true