你好,谢谢你的关注,我想达到这种效果的:编辑框中只能输入要求格式的字符,其它字符输入不了,就像下面这个(以前csdn上给出的)<input  type="text" onpropertychange="if(/-?\d+\.\d(0,2)/g.test(value))value=value.replace(/\D/g,'')" style="ime-mode:disabled" ondragenter="return false">这个输入框就只能输入数字,请问怎么只能输入所求格式的数字。谢谢!

解决方案 »

  1.   

    <script language="javascript">
    function isDigit(s)
    {
    var patrn=/^[0-9]{1,20}$/;
    if (!patrn.exec(s)) return false
    return true
    }
    </script>
    看这样可不可以?
      

  2.   

    你想确定数字的格式,就可以直接在patrn里改就可以了[]表示是格式类型,{}表示多少
      

  3.   

    如何在用一个程序检测所输入的内容是否合法,以下是本人自己编写的一个程序对日期、数字、整数和特殊字符进行了判断同时还可判断是正数还是负数(对数值类和整数而言) 
    <script language="javascript"> 
    <!-- 
    /** 
    LogicalValue:用于判断对象的值是否符合条件,现已提供的选择有: 
           integer:整型,还可判断正整型和负整型 
           number :数值型,同样可判断正负 
           date  :日期型,可支持以自定义分隔符的日期格式,缺省是以'-'为分隔符 
           string :判断一个字符串包括或不包括某些字符 
    返回值: 
      true或false 
    参数: 
    ObjStr :对象标识符——对象名; 
    ObjType:对象类型('integer','number','date','string'之一) 
    其他说明: 
      当对象值为空时,则返回错误。 
    Author:PPDJ   
    例子: 
      example 1:要求检验输入框text1的输入数据是否是“整型”数据,若不是,则提示 
        if (!LogicalValue('text1','integer')) alert('Error: Your must input a integer number'); 
      example 2:要求检验输入框text1的输入数据是否是“正整型”数据,若不是,则提示   
        if (!LogicalValue('text1','integer','+')) alert('Error: Your must input a positive integer number'); 
      example 3:要求检验输入框text1的输入数据是否是“负整型”数据,若不是,则提示   
        if (!LogicalValue('text1','integer','-')) alert('Error: Your must input a negative integer number'); 
      exmaple 4:要求检验输入框text1的输入数据是否是数值,若不是,则提示   
        if (!LogicalValue('text1','number')) alert('Error: Your must input a number'); 
      */ 
    function LogicalValue(ObjStr,ObjType) 

      var str=''; 
      if ((ObjStr==null) || (ObjStr=='') || ObjType==null) 
      { 
       alert('函数LogicalValue缺少参数'); 
       return false; 
      } 
      var obj = document.all(ObjStr); 
      if (obj.value=='') return false; 
      for (var i=2;i<arguments.length;i++) 
      {  
       if (str!='') 
         str += ','; 
       str += 'arguments['+i+']'; 
      } 
      str=(str==''?'obj.value':'obj.value,'+str); 
      var temp=ObjType.toLowerCase(); 
      if (temp=='integer') 
      { 
        return eval('IsInteger('+str+')'); 
      } 
      else if (temp=='number') 
      { 
       return eval('IsNumber('+str+')'); 
      } 
      else if (temp=='string') 
      { 
       return eval('SpecialString('+str+')'); 
      } 
      else if (temp=='date') 
      { 
       return eval('IsDate('+str+')'); 
      } 
      else 
      { 
       alert('"'+temp+'"类型在现在版本中未提供'); 
       return false; 
      } 

    /** 
    IsInteger: 用于判断一个数字型字符串是否为整形, 
      还可判断是否是正整数或负整数,返回值为true或false 
    string: 需要判断的字符串 
    sign: 若要判断是正负数是使用,是正用'+',负'-',不用则表示不作判断 
    Author: PPDJ 
    sample: 
      var a = '123'; 
      if (IsInteger(a)) 
      { 
       alert('a is a integer'); 
      } 
      if (IsInteger(a,'+')) 
      { 
       alert(a is a positive integer); 
      } 
      if (IsInteger(a,'-')) 
      { 
       alert('a is a negative integer'); 
      } 
    */ 
    function IsInteger(string ,sign) 
    {  
      var integer; 
      if ((sign!=null) && (sign!='-') && (sign!='+')) 
      { 
       alert('IsInter(string,sign)的参数出错:nsign为null或"-"或"+"'); 
       return false; 
      } 
      integer = parseInt(string); 
      if (isNaN(integer)) 
      { 
       return false; 
      } 
      else if (integer.toString().length==string.length) 
      {  
       if ((sign==null) || (sign=='-' && integer<0) || (sign=='+' && integer>0)) 
       { 
         return true; 
       } 
       else 
         return false;  
      } 
      else 
       return false; 

    /** 
    IsDate: 用于判断一个字符串是否是日期格式的字符串 
    返回值: 
      true或false   
    参数: 
    DateString: 需要判断的字符串 
    Dilimeter : 日期的分隔符,缺省值为'-' 
    Author: PPDJ 
    sample: 
      var date = '1999-1-2'; 
      if (IsDate(date)) 
      { 
       alert('You see, the default separator is "-"); 
      } 
      date = '1999/1/2"; 
      if (IsDate(date,'/')) 
      { 
       alert('The date's separator is "/"); 
      } 
    */ 
    function IsDate(DateString , Dilimeter) 

      if (DateString==null) return false; 
      if (Dilimeter=='' || Dilimeter==null) 
       Dilimeter = '-'; 
      var tempy=''; 
      var tempm=''; 
      var tempd=''; 
      var tempArray; 
      if (DateString.length<8 && DateString.length>10) 
        return false;    
      tempArray = DateString.split(Dilimeter); 
      if (tempArray.length!=3) 
       return false; 
      if (tempArray[0].length==4) 
      { 
       tempy = tempArray[0]; 
       tempd = tempArray[2]; 
      } 
      else 
      { 
       tempy = tempArray[2]; 
       tempd = tempArray[1]; 
      } 
      tempm = tempArray[1]; 
      var tDateString = tempy + '/'+tempm + '/'+tempd+' 8:0:0';//加八小时是因为我们处于东八区 
      var tempDate = new Date(tDateString); 
      if (isNaN(tempDate)) 
       return false; 
     if (((tempDate.getUTCFullYear()).toString()==tempy) && (tempDate.getMonth()==parseInt(tempm)-1) && (tempDate.getDate()==parseInt(tempd))) 
      { 
       return true; 
      } 
      else 
      { 
       return false; 
      } 

    /** 
    IsNumber: 用于判断一个数字型字符串是否为数值型, 
      还可判断是否是正数或负数,返回值为true或false 
    string: 需要判断的字符串 
    sign: 若要判断是正负数是使用,是正用'+',负'-',不用则表示不作判断 
    Author: PPDJ 
    sample: 
      var a = '123'; 
      if (IsNumber(a)) 
      { 
       alert('a is a number'); 
      } 
      if (IsNumber(a,'+')) 
      { 
       alert(a is a positive number); 
      } 
      if (IsNumber(a,'-')) 
      { 
       alert('a is a negative number'); 
      } 
    */ 
    function IsNumber(string,sign) 

      var number; 
      if (string==null) return false; 
      if ((sign!=null) && (sign!='-') && (sign!='+')) 
      { 
       alert('IsNumber(string,sign)的参数出错:nsign为null或"-"或"+"'); 
       return false; 
      } 
      number = new Number(string); 
      if (isNaN(number)) 
      { 
       return false; 
      } 
      else if ((sign==null) || (sign=='-' && number<0) || (sign=='+' && number>0)) 
      { 
       return true; 
      } 
      else 
       return false; 

    /** 
    SpecialString: 用于判断一个字符串是否含有或不含有某些字符 
    返回值: 
      true或false    
    参数: 
    string   : 需要判断的字符串 
    compare  : 比较的字符串(基准字符串) 
    BelongOrNot: true或false,“true”表示string的每一个字符都包含在compare中, 
           “false”表示string的每一个字符都不包含在compare中 
    Author: PPDJ 
    sample1: 
      var str = '123G'; 
      if (SpecialString(str,'1234567890')) 
      { 
       alert('Yes, All the letter of the string in '1234567890''); 
      } 
      else 
      { 
       alert('No, one or more letters of the string not in '1234567890''); 
      } 
      结果执行的是else部分 
    sample2: 
      var password = '1234'; 
      if (!SpecialString(password,''"@#$%',false)) 
      { 
       alert('Yes, The password is correct.'); 
      } 
      else 
      { 
       alert('No, The password is contain one or more letters of '"@#$%''); 
      }  
      结果执行的是else部分 
    */ 
    function SpecialString(string,compare,BelongOrNot) 

      if ((string==null) || (compare==null) || ((BelongOrNot!=null) && (BelongOrNot!=true) && (BelongOrNot!=false))) 
      { 
       alert('function SpecialString(string,compare,BelongOrNot)参数错误'); 
       return false; 
      } 
      if (BelongOrNot==null || BelongOrNot==true) 
      { 
       for (var i=0;i<string.length;i++) 
       { 
         if (compare.indexOf(string.charAt(i))==-1) 
          return false 
       } 
       return true; 
      } 
      else 
      { 
       for (var i=0;i<string.length;i++) 
       { 
         if (compare.indexOf(string.charAt(i))!=-1) 
          return false 
       } 
       return true; 
      } 

    //--> 
    </script>
      

  4.   

    首先谢谢两位的热心帮助,尤其是小鱼兄弟(mm?)。
    回xuzuning(唠叨) :你的正则式要求必须输入小数点,不是太和要求,我在别的贴子上找到了一个正则式如下
    var re = /^[\-\+]?([0-9]\d*|0|[1-9]\d{0,2}(,\d{3})*)(\.\d+)?$/;
    试了一下好像是对的。回AgathaZ(游弋的小鱼) :我现在要用到验证的页面是一个有很多输入项的页面(一般都有百十个),在提交的时候再验证对用户而言不是太方便,我想在用户输入的时候就进行限制,使用户的错误输入输不进去,但是这时候函数在什么事件发生时调用我不清楚,试了几个现在刚有了点眉目,谢谢。
      

  5.   

    首先申明,我不是男的
    可以在用户输入完后,把光标移出输入框就进行判断
    <input name="dot" type="text" id="dot" value="" size="6" maxlength="6" onchange="if(!isDigit(this.value)) { alert('请输入0到999999之间的数值');}">
    js函数就是顶上面的那个
      

  6.   

    <input  type="text" onpropertychange="if(/-?\d+\.\d(0,2)/g.test(value))value=value.replace(/\D/g,'')" style="ime-mode:disabled" ondragenter="return false">就跟这个差不多了!
      

  7.   

    看不懂,好像没有onproprtychang和ondragenter这个属性吧
    我可能懂你的意思了,你是想让用户在输入的时候,就给出判断,这好像不好怎么做!!!