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