Javascript 不允许使用负值
防止用户在输入文本元素中输入负值的最佳方法是什么 目前我正在检查模糊上的字段值,但我希望有人有更好的解决方案Javascript 不允许使用负值,javascript,jquery,Javascript,Jquery,防止用户在输入文本元素中输入负值的最佳方法是什么 目前我正在检查模糊上的字段值,但我希望有人有更好的解决方案 $(".payment").blur(function() { var payment = getAmount($(this).val()); if(!isNaN(payment) && amount >= 0) { $(this) .css("color", "black") .val
$(".payment").blur(function() {
var payment = getAmount($(this).val());
if(!isNaN(payment) && amount >= 0) {
$(this)
.css("color", "black")
.val(currency(payment));
} else {
if(amount < 0) showMessage("Negative amounts are not allowed", "error");
$(this).css("color", "red");
}
});
function getAmount(strAmount) {
var amount = new String(strAmount).replace(/\$/g, "").replace(/,/g, "");
return parseFloat(amount);
}
$(“.payment”).blur(函数(){
var payment=getAmount($(this).val());
如果(!isNaN(付款)&金额>=0){
$(本)
.css(“颜色”、“黑色”)
.val(货币(付款));
}否则{
如果(金额<0)显示消息(“不允许负金额”,“错误”);
$(this.css(“颜色”、“红色”);
}
});
函数getAmount(strAmount){
var amount=新字符串(strAmount)。替换(/\$/g,“”)。替换(/,/g,“”);
返回浮动(金额);
}
您可以使用jQuery的.keypress()
并防止对-key执行默认操作。
例如:
这应该起到作用:
$(".payment").keydown(function(event) {
if (event.keyCode == 45 ) { event.preventDefault(); }
});
这将防止在检测到“-”(45)的字符代码时注册keydown事件。您可以使用jQuery或事件对每个键上的输入进行测试
如果您还有其他需要验证的字段,请考虑jQuery插件。
< P>谢谢所有的答案。 以下是我的结论:$("input.payment").keypress(function(e) {
validateNumeric(e);
});
function validateNumeric(evt) {
var theEvent = evt || window.event;
var key = theEvent.keyCode || theEvent.which;
key = String.fromCharCode( key );
var regex = /[0-9]|\./;
if( !regex.test(key) ) {
theEvent.returnValue = false;
if(theEvent.preventDefault) theEvent.preventDefault();
}
}
假设您可能不想使用键代码(
e.which
,e.keyCode
等等),这里还有一个选项:
$('#a').blur(
function(){
var v = $(this).val(),
t = parseInt(v,10),
b = isNaN(t);
if (b){
$(this).val('');
}
else {
$(this).val(Math.abs(t));
}
});
参考资料:
getAmount函数的作用是什么?而金额
变量来自哪里?如果(!isNaN(payment)&&payment>=0)
正在处理模糊,您的真正问题是应该在什么时候验证字段,这取决于具体情况。您可以在加密、更改、模糊或表单提交时进行验证。每种方法都有各自的优点和缺点。我真的不知道这是否是最好的方法,但您可以使用keyup事件
获取值,然后检查它是否正确。您需要听击键。请看:这更多的是一个可用性问题,作为一个用户,我更希望在我完成它时(即在模糊上)让它验证,而不是在编辑时。如果我的胖手指-
在我有机会删除它之前,我不想让它打断我。你在哪里想出45?我按破折号键时得到109分。除此之外,想法是一样的。好的解决方案。我也会在提交时进行验证,以防他们复制粘贴。@David根据这里它是189:根据这里它是45:我觉得这个键可能有多个值……好吧,我能想到的唯一值是109。我按下+/=旁边的破折号,以及我的numpad破折号,无论是否启用Num Lock,它都保持不变。当然,这只是一个有一个美国键盘的家伙。@David我做了同样的事情,在jQuery网站上,它给出了45个,另外189个。我认为需要做一些测试,或者四处看看以确保所有关键值都被考虑在内,
$('#a').blur(
function(){
var v = $(this).val(),
t = parseInt(v,10),
b = isNaN(t);
if (b){
$(this).val('');
}
else {
$(this).val(Math.abs(t));
}
});