我有这个输入标签,您可以在其中填写收据总额:
<input type="text" name="currency" id="currency" class="text-input" onBlur="this.value=formatCurrency(this.value);" />
Javascript如下:
<script type="text/javascript">
function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g,'');
if(isNaN(num)) {
num = "0";
}
sign = (num == (num = Math.abs(num)));
num = Math.floor(num*100+0.50000000001);
cents = num % 100;
num = Math.floor(num/100).toString();
if(cents < 10) {
cents = "0" + cents;
}
for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++) {
num = num.substring(0,num.length-(4*i+3))+','+num.substring(num.length-(4*i+3));
}
return (((sign)?'':'-') + '$' + num + '.' + cents);
}
</script>
用户只能输入超过$ 10.00美元的收据,如何在我的脚本上设置?他们还需要知道他们不能输入低于10美元的货币。
答案 0 :(得分:0)
您可以在提交表单时应用验证功能,以测试该值是否低于阈值,例如:
function validate()
{
value = document.getElementById('currency');
if (value <= 10.00)
{
return false
} else
{
return true;
}
}
您也可以将此应用于onblur事件,但我的偏好是在提交表单时显示验证错误。
答案 1 :(得分:0)
看起来你正在尝试解析一个字符串,很好地将它转换成美元和美分,如果它小于10则拒绝它。有一个更好的方法可以做到这一点:
function formatCurrency(num) {
// Remove the dollar sign
num = num.replace("$", "");
// Change the string to a float, and limit to 2 decimal places
num = parseFloat(num);
Math.round(num * 100) / 100;
// If its less than 10, reject it
if(num < 10) {
alert("Too small!");
return false;
}
// Return a nice string
return "$" + num;
}
最后,如果数字为负数,您是否尝试返回-$99.94
?
答案 2 :(得分:0)
从我可以从你的问题中收集的内容,我认为你正在寻找这样的东西。基本上如果我们有一个有效的条目,例如$100.00
,我们继续,返回true等,否则如果我们有一些看起来像int或float的东西我们可以重新格式化并递归函数,否则提示用户输入vaild < / p>
var foo = document.getElementById('foo');
foo.addEventListener('blur', function(e) {
var val = e.target.value;
var err = document.getElementById('err');
var errMsg = 'please enter a value $10.00 or greater';
var patt = /^\$\d+\.\d{2}$/;
var amount = parseInt(val.replace(/\$|\./g, ''));
if (val !== '') {
if (patt.test(val)) {
if (amount < 1000) {
err.textContent = errMsg;
} else {
document.getElementById('suc')
.textContent = 'processing request';
}
} else if (typeof amount == 'number' && !/[a-z]/g.test(val)) {
if (/\.\d{2}/.test(val)) {
e.target.value = '$' + (amount / 100);
} else {
e.target.value = '$' + amount + '.00';
}
arguments.callee(e);
} else {
err.textContent = errMsg;
}
}
});
这是一个demo