对于我的商务网络应用程序,我希望用户只能在文本框中输入有效的货币值。
目前我使用
$input.val($input.val().replace(/[^.\d]/g, ''));
但是这并没有考虑到顺序或多个小数分隔符。
因此用户必须输入整数或有效的十进制值,例如:
如果允许,也可以获得奖励积分:
所以我不想验证,我想限制在文本框中输入。单个正则表达式替换可以实现吗?
答案 0 :(得分:0)
提供错误建议更方便用户,让用户自行修复错误。您可能会考虑使用keyup事件,但过早显示错误(在用户有机会输入有效值之前)也会很烦人。 e.g。
function validate(el) {
var type = el.className;
var errEl = document.getElementById(el.name + 'Err');
if (type == 'typeCurrency') {
var currencyRe = /^-?(\d+(\.\d{1,2})?|\.\d{1,2})$/;
errEl.style.visibility = currencyRe.test(el.value)? 'hidden' : 'visible';
}
}
.errorMessage {
color: red;
background-color: white;
visibility: hidden;
}
Cost <input onblur="validate(this)" name="foo" class="typeCurrency" placeholder="0.00"><br>
<span id="fooErr" class="errorMessage">Please enter a valid cost, e.g. 2.45</span>