验证货币(EUR)并汇总所有值

时间:2016-10-28 16:44:15

标签: javascript regex validation

我看到很多帖子都进行了各种验证,但我找不到适合我的帖子,所以这就是我的问题:

我有几个货币字段,用户可以输入他们想要的任何货币。

如果所有货币字段都有默认货币,我还有另一个显示总和的字段:(因此默认表示法为100.000,00 - 请注意逗号和点的切换与英文标准相比)。
如果至少有一个货币字段的货币与不同,则sum字段将显示提示"Foreign currencies given"

我不希望用户每次都必须输入符号,但如果他们这样做,我不希望收到错误。

所以这里有一些例子可以在不触发提示的情况下键入,以及当用户退出该字段时它应该是什么样子:

  • 0000,00,005
    (应该忽略第二个小数后应该转到0,00 €每个数字)
  • 999999,99 €
    (应转向999.999,99 €,最大可能值 - 不超过6位数,而,后<2}
  • 0 92, 3€
    (应该转到92,30 €,只要该术语无效,就应该可以在任何位置插入空格
  • 21€(应转向21,00 €
  • 可选:23.4(应转向23,40 €),23.004(应转向23.004,00 €) - 基本上当点后面的数字少于3位时将其视为92,3一个逗号

我到目前为止所做的是这个,但它不适用于var val = getValue(); //Here I get the string value of my input field if (val!==null) { if (!isNaN(val)) { return val + " €"; } } 以及我上面列出的大多数其他例子,我认为它一般不好看:

var sum = 0.0;
for(var i=0;i<currencyFieldArr.length;i++)
{
    var strValue = currencyFieldArr[i].getValue();
    if(strValue.search("€") === -1 && !currencyFieldArr[i].isNull)
    {   
        sum = "Fremdwährungen sind vorhanden";  
        break;
    }
    else if(strValue.search("€")!=-1)
    {
        var strNoComma      =   strValue.replace(',','.');
        var moneyAsNumber   =   parseFloat(strNoComma);
        sum+=moneyAsNumber;
    }
}
return sum;

当我浏览所有货币字段以查看要添加到我的总和字段中的内容时,我会这样做:

var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
if (emailFieldValue.search(emailRegEx) === -1) {
    status = false;
}

我正在寻找一个只有JS的解决方案。 我可以像这样使用正则表达式(只是一个例子 - 我从SO复制,适用于我的电子邮件验证):

var markerCluster = new MarkerClusterer(map, markers, {
            maxZoom: 18,
            imagePath: 'images/m'});

0 个答案:

没有答案