我想验证keyup事件中的文本字段。
在该字段中,它应该接受货币类型小数,例如
(12.23) (.23) (0.26) (5.09) (6.00)
如果我输入了一些错误的值,那么它应该返回到以前的值并删除错误的值
我想验证keyup事件中的文本字段。
在该字段中,它应该接受货币类型小数,例如
(12.23) (.23) (0.26) (5.09) (6.00)
如果我输入了一些错误的值,那么它应该返回到以前的值并删除错误的值
我认为这样的事情可能是你最好的选择
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
您可以使用以下正则表达式
val = "2.13"
if (!val.match(/^(\d{0,2})(\.\d{2})$/)) {
alert("wrong");
} else {
alert("right");
}
编辑
请注意,如果点 (.) 前面的数字的长度限制为 2,则代码有效代码为
^(\d{0,2})(\.\d{2})$
否则,如果没有限制,那么只需2
从代码中删除,即
^(\d{0,})(\.\d{2})$
尝试这个:
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 );'>
试试下面的代码
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)" />