求验证输入框中仅能输入数字(含小数点)的js代码

时间:2022-11-07 12:02:08
如果输入其它字符,提交的时候会提示请非法输入。

13 个解决方案

#1


<input type="text" onKeypress="return (/[\d.]/.test(String.fromCharCode(event.keyCode)))"/>

#2


<input type="text" onKeypress="var TF=(/[\d.]/.test(String.fromCharCode(event.keyCode)));if(!TF) alert('错误'); return TF;"/>


刚刚题没有看完 ^_^'

#3


/^\d+(\.\d+)?$/

#4


<script language=javascript>
function isNumber(str)
{
return str.match(/\D/)==null
}
</script>

#5


如果别人输入的时候输入两个以上的小数点怎么办。

#6


function regInput(reg)
{
        var srcElem = event.srcElement
        var oSel = document.selection.createRange()
        var srcRange = srcElem.createTextRange()
        oSel.setEndPoint("StartToStart", srcRange)
        var num = oSel.text + String.fromCharCode(event.keyCode) + srcRange.text.substr(oSel.text.length)
        event.returnValue = reg.test(num)
}

在文本框中加上以下代码
onKeyPress="regInput(/^[0-9]*$/)" style="ime-mode:disabled"

#7


上面的代码,包括英文字母,中文输入法都写不出来。
但还是解决不了shift+数字的问题
如果想加上小数点可以改成="regInput(/^[0-9]*$./)"
但还是解决不了多次输入小数点的问题

#8


这个应该是绝对没有问题了
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<script language="javascript">
  function checkIsFloat(){
    var nc=event.keyCode;
    if((nc>=48) && (nc<=57) ){
    }else if(nc==46){
      var s=document.frm.lengzg.value;
      for(var i=0;i<s.length;i++){
        if(s.charAt(i)=='.'){
              event.keyCode=0; return;
        }
      }
    }else{
      event.keyCode=0;return;
    }
  }
</script>
</head>
<body bgcolor="#ffffff">
<form name="frm">
<table width="331" border="0">
  <tr>
    <td width="154" height="35" scope="col">
      <div align="right">
        <label><font  size="2">输入距离:</font></label>
      </div></td>
    <td width="167" scope="col"><input type="text" name="lengzg" value="100" style="width:120px;" onkeypress="checkIsFloat();"><font  size="2">米</font>   
</td>
  </tr>
</table>
</form>
</body>
</html>

#9


<input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text2" NAME="Text2">

#10


cxz7531(大花猫) 你这个切换到中文输入法 可以连续输入“。” 也不全面

#11


/^[\d]+[\.]?[\d]+$/g

#12


to hcqhappy(月坏) 
----------------
既然这样,再完善一下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<script language="javascript">
  function checkIsFloat(){
    var nc=event.keyCode;
    if((nc>=48) && (nc<=57) ){
    }else if(nc==46){
      var s=document.frm.lengzg.value;
      for(var i=0;i<s.length;i++){
        if(s.charAt(i)=='.'){
              event.keyCode=0; return;
        }
      }
    }else{
      event.keyCode=0;return;
    }
  }
</script>
</head>
<body bgcolor="#ffffff">
<form name="frm">
<table width="331" border="0">
  <tr>
    <td width="154" height="35" scope="col">
      <div align="right">
        <label><font  size="2">输入距离:</font></label>
      </div></td>
    <td width="167" scope="col">
    <input type="text" name="lengzg" value="100" 
           style="width:120px;ime-mode:disabled" 
           onkeypress="checkIsFloat();" 
           onpaste="return !clipboardData.getData('text').match(/\D/)" 
           ondragenter="return false" >
      <font  size="2">米</font>   
</td>
  </tr>
</table>
</form>
</body>
</html>


#13


多谢各位大侠了

#1


<input type="text" onKeypress="return (/[\d.]/.test(String.fromCharCode(event.keyCode)))"/>

#2


<input type="text" onKeypress="var TF=(/[\d.]/.test(String.fromCharCode(event.keyCode)));if(!TF) alert('错误'); return TF;"/>


刚刚题没有看完 ^_^'

#3


/^\d+(\.\d+)?$/

#4


<script language=javascript>
function isNumber(str)
{
return str.match(/\D/)==null
}
</script>

#5


如果别人输入的时候输入两个以上的小数点怎么办。

#6


function regInput(reg)
{
        var srcElem = event.srcElement
        var oSel = document.selection.createRange()
        var srcRange = srcElem.createTextRange()
        oSel.setEndPoint("StartToStart", srcRange)
        var num = oSel.text + String.fromCharCode(event.keyCode) + srcRange.text.substr(oSel.text.length)
        event.returnValue = reg.test(num)
}

在文本框中加上以下代码
onKeyPress="regInput(/^[0-9]*$/)" style="ime-mode:disabled"

#7


上面的代码,包括英文字母,中文输入法都写不出来。
但还是解决不了shift+数字的问题
如果想加上小数点可以改成="regInput(/^[0-9]*$./)"
但还是解决不了多次输入小数点的问题

#8


这个应该是绝对没有问题了
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<script language="javascript">
  function checkIsFloat(){
    var nc=event.keyCode;
    if((nc>=48) && (nc<=57) ){
    }else if(nc==46){
      var s=document.frm.lengzg.value;
      for(var i=0;i<s.length;i++){
        if(s.charAt(i)=='.'){
              event.keyCode=0; return;
        }
      }
    }else{
      event.keyCode=0;return;
    }
  }
</script>
</head>
<body bgcolor="#ffffff">
<form name="frm">
<table width="331" border="0">
  <tr>
    <td width="154" height="35" scope="col">
      <div align="right">
        <label><font  size="2">输入距离:</font></label>
      </div></td>
    <td width="167" scope="col"><input type="text" name="lengzg" value="100" style="width:120px;" onkeypress="checkIsFloat();"><font  size="2">米</font>   
</td>
  </tr>
</table>
</form>
</body>
</html>

#9


<input onkeyup="value=value.replace(/[^\d]/g,'') " onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))" ID="Text2" NAME="Text2">

#10


cxz7531(大花猫) 你这个切换到中文输入法 可以连续输入“。” 也不全面

#11


/^[\d]+[\.]?[\d]+$/g

#12


to hcqhappy(月坏) 
----------------
既然这样,再完善一下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
<script language="javascript">
  function checkIsFloat(){
    var nc=event.keyCode;
    if((nc>=48) && (nc<=57) ){
    }else if(nc==46){
      var s=document.frm.lengzg.value;
      for(var i=0;i<s.length;i++){
        if(s.charAt(i)=='.'){
              event.keyCode=0; return;
        }
      }
    }else{
      event.keyCode=0;return;
    }
  }
</script>
</head>
<body bgcolor="#ffffff">
<form name="frm">
<table width="331" border="0">
  <tr>
    <td width="154" height="35" scope="col">
      <div align="right">
        <label><font  size="2">输入距离:</font></label>
      </div></td>
    <td width="167" scope="col">
    <input type="text" name="lengzg" value="100" 
           style="width:120px;ime-mode:disabled" 
           onkeypress="checkIsFloat();" 
           onpaste="return !clipboardData.getData('text').match(/\D/)" 
           ondragenter="return false" >
      <font  size="2">米</font>   
</td>
  </tr>
</table>
</form>
</body>
</html>


#13


多谢各位大侠了