使用javascript或jquery在文本字段中进行十进制验证

时间:2013-08-28 06:18:59

标签: javascript jquery

我想验证 keyup 事件中的文本字段。

在现场它应该接受货币类型十进制像

(12.23) (0.23) (0.26) (5.09) (6.00)

如果我输入了一些错误的值,那么它应该返回到先前的值并删除错误的值

4 个答案:

答案 0 :(得分:4)

我觉得这样的事情可能是你最好的选择

var isValidCurrency = function(str) {
  var num = parseFloat(str);
  return !Number.isNaN(num) && num.toFixed(2).toString() === str;
};

一些测试

isValidCurrency("1234.56");   // true
isValidCurrency("1234.565");  // false
isValidCurrency("1234");      // false
isValidCurrency("foo");       // false

答案 1 :(得分:0)

试试这个:

function evMoneyFormat(evt) {
    //--- only accepts accepts number and 2 decimal place value
    var theEvent = evt || window.event;
    var key = theEvent.keyCode || theEvent.which;
    key = String.fromCharCode(key);
    var regex = /^[0-9]{1,14}\.[0-9]{0,2}$/; // number with 2 decimal places
    if (!regex.test(key)) {
        theEvent.returnValue = false;
        //--- this prevents the character from being displayed
        if (theEvent.preventDefault) theEvent.preventDefault();
    }
}

控件:

<input type='text' onkeyup='evMoneyFormat( e );'>

答案 2 :(得分:0)

您可以使用以下Regex

val = "2.13"
if (!val.match(/^(\d{0,2})(\.\d{2})$/)) {
    alert("wrong");
} else {
    alert("right");
}

http://jsfiddle.net/rtL3J/1/

修改

请注意,如果点(。)前面的数字的长度限制为2,则代码有效代码为

^(\d{0,2})(\.\d{2})$

否则,如果没有限制,则只需从代码中删除2,即

^(\d{0,})(\.\d{2})$

答案 3 :(得分:0)

尝试以下代码

function validateDecimal(num){

   var dotPosition=num.indexOf(".");

   if(dotPosition=="-1"){
      document.getElementById('cost').value= num+".00"
   }
}

并在html中

<input type="text" id='cost' onkeyup="validateDecimal(this.value)" />