2016-07-18 37 views
0

我有这样的验证检查:检查值为NaN,但允许使用特殊字符

if (isNaN($scope.QuickQuoteData.RequestedAmount)) { 
    $scope.ShowValidation = true; 
    $scope.errors.push('Requested amount has invalid value.'); 
} 

但我想允许的,例如,如果用户将在此格式输入值:

€ 1500000 
€ 1.500.000 
1.500.000 

然后我需要允许操作继续而不是抛出验证错误。

所以除上述格式的输入值外,其他格式都是无效的。

任何想法如何调整?

感谢,Laziale

+3

使用正则表达式。如果您搜索,有很多用于验证货币字符串。 –

+0

我认为国际(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl)对象有一些支持根据不同的区域设置来解析数字输入。 – Anthony

+0

嗨,你可以看看这里,但考虑到在他们使用美元符号的链接的例子中,他们使用逗号和点相反的方式相比你的例子(我想你想逗号为小数点和千位/百万点等等)... http://stackoverflow.com/questions/16242449/regex-currency-validation – mastazi

回答

1

你可以用下面的方法

if (!("Any Number with special chars".test(/^[a-zA-Z]+$/))) { ... } 

检查这检查提供的号码有字符串或不 不会检查特殊字符...

0

由于我低估你的要求,你可以做这样的事情。

var specialChars=[".", "$", "€"]; //Add your symbols whatever you need. 

function validate(val){ 
    for(var i=0;i<val.length;i++){ 
    if(specialChars.indexOf(val[i]) >= 0) { 
     continue; 
    } 
    if(isNaN(val[i])) { 
     return false; 
    } 
    } 
    return true; 
} 
+0

是的,但如果用户将输入€asodkao作为输入值呢? – Laziale

+0

你需要在'key events'上调用'validate()'函数。它将按预期工作。 –

+0

@拉齐亚莱回答编辑,检查一次。现在你可以传递整个值而不是一个'char' –

相关问题