我正在尝试让用户输入数字,并根据该数字在哪个范围内进行重定向。如果使用文本输入并将每个输入分配给相应的URL,则可以使用,但是当我使用数字输入时,则不起作用。
我现在的代码是
<html>
<div align=center>
<br>
<form method="post" id="TEST">
<input type="number" id="command" tabindex="1">
<br><br>
<input type="submit" value="redirect me">
</form>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function() {
$("form").submit(function() {
if ($('#command').val() >= 46) {
window.location = "http://www.example.com/46";
}
else if ($('#command').val() > 46.1 && > 50) {
window.location = "http://www.example.com/49";
}
else if ($('#command').val() === 50) {
window.location = "http://www.example.com/50";
}
else if ($('#command').val() >= 50.1 && <= 52) {
window.location = "http://www.example.com/52";
}
else if ($('#command').val() >= 52.1 && <= 53) {
window.location = "http://www.example.com/53";
}
else if ($('#command').val() >= 53.1 && <= 54) {
window.location = "http://www.example.com/54"
}
else if ($('#command').val() >= 54.1 && <= 56 {
window.location = "http://www.example.com/56"
}
else return false;
});
});
});
</script>
</html>
我确定这很明显,但是我无法解决。任何解决方案表示赞赏!
答案 0 :(得分:0)
您需要比较$('#command').val()
两侧的&&
。您需要将每个分组视为自己的全新比较。这是前两个if语句:
let command = $('#command').val()
if (command >= 46) {
window.location = "http://www.example.com/46";
}
else if (command > 46.1 && command > 50) {
window.location = "http://www.example.com/49";
}
最后一个)
中缺少else if
。同样,我们也可以调用false
而不是返回e.preventDefault()
,这将防止该元素(在这种情况下为表单提交)的默认行为。
我们要做的另一件事是颠倒if / else语句的顺序,因为一旦您使用大于或等于46
的数字,则第一个语句将运行,并且所有其他测试数字都是大于46
,因为第一个语句已作为true
执行,所以它将永远不会到达它们。
您的html输入字段设置为数字,但是您的javascript允许使用浮点数,因此如果没有step属性,我们无法在数字字段中输入浮点数,所以我在输入字段中添加了step="0.01"
。
在下面的示例中,出于堆栈溢出的目的,我将window.location
替换为console.log
:
$(document).ready(function() {
$("form").submit(function(e) {
// Stop the form from submiting
e.preventDefault()
// Save a reference to the value
let command = parseFloat($('#command').val())
// Test the values from highest to lowest
if (command >= 54.1 && command <= 56) {
console.log("http://www.example.com/56");
} else if (command >= 53.1 && command <= 54) {
console.log("http://www.example.com/54");
} else if (command >= 52.1 && command <= 53) {
console.log("http://www.example.com/53");
} else if (command >= 50.1 && command <= 52) {
console.log("http://www.example.com/52");
} else if (command === 50) {
console.log("http://www.example.com/50");
} else if (command > 46.1 && command > 50) {
console.log("http://www.example.com/49");
} else if (command >= 46) {
console.log("http://www.example.com/46");
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form method="post" id="TEST">
<input type="number" id="command" tabindex="1" step="0.01">
<br><br>
<input type="submit" value="redirect me">
</form>
答案 1 :(得分:0)
您的代码语法完全错误。我纠正了。请参阅下面代码中的评论。
但是代码中最大的错误-您编写
if ($('#command').val() >= 50.1 && <= 52)
代替:
if ($('#command').val() >= 50.1 && $('#command').val() <= 52)
以此类推...
更正的代码:
$("form").submit(function()
{
var val = $('#command').val(); //Suggestion: please use $('#command').val() only one time
if(val <= 46) // >= was wrong
{
window.location = "http://www.example.com/46";
}
else if(val > 46.1 && val < 50) // > 50 was wrong
{
window.location = "http://www.example.com/49";
}
else if(val == 50) //do not use "===" because your value is a string! Or convert it to number
{
window.location = "http://www.example.com/50";
}
else if(val >= 50.1 && val <= 52)
{
window.location = "http://www.example.com/52";
}
else if (val >= 52.1 && val <= 53)
{
window.location = "http://www.example.com/53";
}
else if(val >= 53.1 && val <= 54)
{
window.location = "http://www.example.com/54"
}
else if(val >= 54.1 && val <= 56) // one ) symbol was missed
{
window.location = "http://www.example.com/56"
}
else return false;
});
答案 2 :(得分:-1)
您的代码是用于比较浮点数的身份比较字符串,您的第二次比较缺少要比较的值。
将值转换为浮点型,在else-ifs中指定用于第二次比较的值,它将按您的意愿进行:
var value = parseFloat($('#command').val());
if (value >= 46) {
window.location = "http://www.example.com/46";
}
else if (value > 46.1 && value > 50) {
window.location = "http://www.example.com/49";
}
[ ... ]