我想验证用户输入。如果用户输入的数字大于3,那么它应该输出错误“太高”,如果小于0.15,则“太低”。如果它介于3和0.15之间,那么它应该显示'Okay'。
我的代码存在的问题是,如果用户输入了负值,它仍然会向他显示“好”。似乎无论用户输入什么,它都显示'好'。
这是代码:
$('#submit').click(function(e) {
vel = $('#vel').val();
validVel(vel);
});
function validVel(v) {
if (v > 3) {
$('.er').fadeIn(2000);
var error = "Too High";
$('.er').text(error);
}
else if (v < 0.15) {
$('.er').fadeIn(2000);
var error = "Too Low";
$('.er').text(error);
}
else {
$('.er').fadeIn(2000);
var error = "Okay";
$('.er').text(error);
}
}
答案 0 :(得分:4)
您的函数中需要parseFloat
以确保相等性检查有效。正如WilQu所指出的,你还应该包括isNaN测试 -
function validVel(v) {
fv = parseFloat(v);
if (fv > 3) {
$('.er').fadeIn(2000);
var error = "Too High";
$('.er').text(error);
}
else if (fv < 0.15) {
$('.er').fadeIn(2000);
var error = "Too Low";
$('.er').text(error);
}
else if (isNaN(fv)) {
$('.er').fadeIn(2000);
var error = "Not a number";
$('.er').text(error);
}
else {
$('.er').fadeIn(2000);
var error = "Okay";
$('.er').text(error);
}
}
答案 1 :(得分:2)
.val()
正在返回一个字符串。要将其转换为数字,只需在$('#vel').val()
之前加上加号,即vel = +$('#vel').val();
答案 2 :(得分:2)
您尝试验证的值是一个字符串。使用parseFloat
功能。不要忘记检查您是否收到NaN
。