0

我正在尝试检查用户是否输入了美分金额。如果他们没有,我会抛出一个错误。

例子:

var paymentAmount = 1
if(paymentAmount.indexOf('.') == -1 ) error("Please add cent amount");

以上适用于示例,但如果用户错误地添加了 2 个小数怎么办。我也希望能够检查这一点。

var paymentAmount = 1.00.2

在上述情况下,只会检测到小数点的第一个 indexOf。

我还需要检查他们是否在小数点后实际输入了美分金额。

进行所有这 3 项检查的最佳方法是什么。

4

4 回答 4

3

您可以为此使用正则表达式:

if (/^\d+(\.\d{2})?$/.test(paymentAmount)) {
    // Do something
}

这是一个工作 jsFiddle

于 2013-07-16T14:47:57.343 回答
1
var paymentAmount = parseFloat('1.00.0');
if ( paymentAmount % 1 === 0 ) {
    console.log('Cents required');
}
于 2013-07-16T14:54:04.620 回答
1

你可以尝试这样的事情:

function validateDecimal(value) {
   var regex = new RegExp(/^\d*\.\d\d$/);
   if (regex.test(value)) {
        return true;
   } else {
       return false;
   }
}

if (validateDecimal(paymentAmount)) {
    //do something
}
于 2013-07-16T14:48:40.307 回答
0
if (Math.floor(paymentAmount) == paymentAmount) {
    //it's a whole number
}
于 2013-07-16T14:59:30.090 回答