Javascript 根据表单输入重定向到URL

Javascript 根据表单输入重定向到URL,javascript,Javascript,我试图让一个用户输入一个数字,然后根据该数字在某个范围内的位置重定向。如果使用文本输入并将每个输入分配到相应的URL,则它可以工作,但如果使用数字输入,则不起作用 我现在的代码是 <html> <div align=center> <br> <form method="post" id="TEST"> <input type="number" id="command" tabindex="1"> <br><br&

我试图让一个用户输入一个数字,然后根据该数字在某个范围内的位置重定向。如果使用文本输入并将每个输入分配到相应的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>




$(文档).ready(函数(){ $(“表格”)。提交(函数(){ 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"; }
否则,如果($('#command').val()>=50.1&&&=52.1&&&=53.1&&&=54.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";
}
[ ... ]

您需要比较
&
两侧的
$('#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";

}
您在最后一个
中缺少
,否则if
。我们也可以调用
e.preventDefault()
,而不是返回
false
,这将阻止元素的默认行为,在本例中是表单提交

我们要做的另一件事是颠倒if/else语句的顺序,因为一旦您使用大于或等于
46
的数字,第一条语句将运行,并且由于所有其他测试数字都大于
46
,它将永远无法到达它们,因为第一条语句已作为
true
执行

您的html输入字段设置为数字,但您的javascript允许浮点,我们无法在没有step属性的数字字段中输入浮点,因此我在输入字段中添加了
step=“0.01”

在下面的示例中,为了堆栈溢出,我将
window.location
替换为
console.log

$(文档).ready(函数(){
$(“表格”)。提交(功能(e){
//阻止表单提交
e、 预防默认值()
//保存对该值的引用
let command=parseFloat($('#command').val())
//测试从最高到最低的值
如果(命令>=54.1&&command=53.1&&command=52.1&&command=50.1&&command 46.1&&command>50){
控制台日志(“http://www.example.com/49");
}否则如果(命令>=46){
控制台日志(“http://www.example.com/46");
}
});
});




您的代码语法完全错误。我已更正。请参阅下面代码中我的注释

但是你的代码中最大的错误是你写的

if ($('#command').val() >= 50.1 && <= 52)
如果($('#command').val()>=50.1&&&=50.1&&$('#command').val()46.1&&val<50)/>50是错误的
{
window.location=”http://www.example.com/49";
}
else if(val==50)//不要使用“==”,因为您的值是字符串!或将其转换为数字
{
window.location=”http://www.example.com/50";
}

否则,如果(val>=50.1&&val=52.1&&val=53.1&&val=54.1&&val您需要在
&
之后再次使用command,那么
..&&&$('#command').val()>=46
我会保存
$('#command').val()的值
添加一个变量以确保可读性。马可,如果你对我的答案感到满意,请在答案的左侧将其标记为已接受。否则,请写一份反馈。
“1”<10==true
“1”>10==false
@GetOffMyLawn他有
$(“#command')。val()===50
,即使输入是
50
,它也会计算为
false
。我没有看到那一个。啊,这完全有道理!我知道为什么它现在应该在技术上工作,但我更改了代码以反映这一点,输入任何数字仍然只会导致错误返回(我认为-浏览器基本上不会对提交的内容做出反应)。还有什么地方看起来不对劲吗?(我感谢你的帮助。仍然在学习,而且似乎过于雄心勃勃)。非常感谢。所有这些都是非常有教育意义的。特别是else if语句的顺序。现在也将学习更多关于浮动的内容。非常感谢您的指导。
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;
});