我看到很多帖子都进行了各种验证,但我找不到适合我的帖子,所以这就是我的问题:
我有几个货币字段,用户可以输入他们想要的任何货币。
如果所有货币字段都有默认货币,我还有另一个显示总和的字段:€
(因此默认表示法为100.000,00 - 请注意逗号和点的切换与英文标准相比)。
如果至少有一个货币字段的货币与€
不同,则sum字段将显示提示"Foreign currencies given"
。
我不希望用户每次都必须输入€
符号,但如果他们这样做,我不希望收到错误。
所以这里有一些例子可以在不触发提示的情况下键入,以及当用户退出该字段时它应该是什么样子:
0
,00
,0,0
,0,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'});