2010-04-21 74 views
3

文本框應接受JavaScript中的onli十進制值。沒有任何其他特殊字符。它不應該接受「。」不止一次。例如。它不應該接受6 ..... 12 任何人都可以幫忙?JavaScript中的十進制小數點

回答

0

您可以使用Regex.test方法:

if (/\d+(\.\d{1,2})/.test(myTextboxValue)) //OK... 
0

如果您的意思是您不想在整個字段中輸入一個整數或小數點以外的任何內容,則需要查看每個鍵被按下時的值 。要抓住粘貼的輸入,請再次檢查onchange。

textbox.onkeyup=textbox.onchange=function(e){ 
    e= window.event? event.srcElement: e.target; 
    var v= e.value; 
    while(v && parseFloat(v)!= v) v= v.slice(0, -1); 
    e.value= v; 
} 
0

可能你想在發送給服務器之前驗證一個表單輸入。這裏是一些例子:

<html> 
    <head> 
     <title>Form Validation</title> 
     <script type="text/javascript"> 
     function validate(){ 
      var field = document.getElementById("number"); 
      if(field.value.match(/^\d+(\.\d*)?$/)){ 
       return true; 
      } else { 
       alert("Not a number! : "+field.value); 
       return false; 
      } 
     } 
     </script> 
    </head> 
    <body> 
     <form action="#" method="post" onsubmit="return validate();"> 
     <input type="text" id="number" width="15" /><br /> 
     <input type="submit" value="send" /> 
     </form> 
    </body> 
</html> 
0

我剛剛把這件事掀起來。有用?

<html> 
<head> 
<script type="text/javascript"> 
function validNum(theField) { 
    val = theField.value; 
    var flt = parseFloat(val); 
    document.getElementById(theField.name+'Error').innerHTML=(val == "" || Number(val)==flt)?"":val + ' is not a valid (decimal) number'; 
} 
window.onload=function(){ 
    validNum(document.getElementById('num')); 
} 
</script> 
</head> 
<body> 
<form> 
<input type="text" name="num" id="num" 
onkeyup="return validNum(this)" /> <span id="numError"></span> 
</form> 
</body> 
</html>