2013-02-19 46 views
0

我是新来的jQuery,但这是我想要做的。jQuery比较提交表单前选择字段值与数组

我有一个多选择字段命名城市和Zip形式,

我试图让这个选择字段的值,并将其与城市的名单上有,如果发现任何匹配的jQuery将使用这些值更新名为city的隐藏文本字段的值,然后提交表单。如果找不到匹配,他们将被重定向到不同的网站。

与邮政编码相同的东西,它会从同一字段获取邮政编码,并查看它是否与列表中的任何邮政编码匹配。如果是,则更新邮政编码隐藏字段,如果没有,则将其重定向到另一个网站。

这是我现在的代码,它不工作。

$("#front-form").submit(function(event) { 
// Getting the values from the HTML select field 
var CityandZip = $("#citynzip").val(); 

//Comparing the values with the cities list 
if (CityandZip === "City 1" || "City 2" || "City 3") { 
    //Updaing the hidden field and submitting 
    $("#HiddenCityField").val(CityandZip); 
//Comparing the values with the ZIP code list 
} else if (CityandZip === "11111" || "11112" || "11113") { 
    //Updating the hidden ZIP code field 
    $("#HiddenZipField").val(CityandZip); 

} else { 
    //Redircting to a new site 
    window.location.href = "http://www. redirecttowebsite.com"; 

} 

}); 

任何帮助将不胜感激,并感谢先进。

+0

你的||是错的(CityandZip ===“11111”|| CityandZip ===“11112”|| CityandZip ===“11113”)使用调试器,你会很容易地发现这种错误。 – 2013-02-19 20:56:10

回答

1

我检查了这一点。我只做了城市检查,而不是邮政编码检查,但它只是建立在现有的实施。

$(function() { 
    var arrCities = [ "Philadelphia", "Pittsburgh", "NYC" ]; 
    $("#front-form").submit(function (event) { 
     $("#citynzip :selected").each(function (i, selected) { 
      if ($.inArray($(selected).text().trim(), arrCities) > -1) { 
       $("#HiddenCityField").val($(selected).text()); 
      } 
      else { 
       window.location.href = "http://www. redirecttowebsite.com"; 
      } 
     }); 
    }); 
}); 

回到我所做的。首先,我拥有基本的城市阵列。我只是在这里扔了一些。然后我像你一样附加到表单提交事件。然后,使用我的jquery选择器来选择citynzip元素的所有选定元素,并在每个选定元素上执行.each()。该条件使用jquery的.inArray()函数检查所选项目是否位于数组中,以检查所选项目是否位于基本数组中以与arrCities进行比较。如果是,请将其添加到隐藏字段中。我不知道如果选择不在数组中,我不知道如何处理。现在看起来好像是否有任何选择不在数组中,即使有一些选择,您希望页面重定向,并且只有在用户所做的所有选择都存在于数组中时才会继续。这应该提供一个起点。

+1

谢谢你,没有你的答案,我无法弄清楚。再次感谢你。 – Sakhar 2013-02-20 16:30:11

+0

没问题!不要忘记upvote /检查! – Tom 2013-02-20 19:06:30

0

你有

window.location.herf 

另外一个错字,你手术室应该是这样的:

if (CityandZip === "City 1" || CityandZip === "City 2" || CityandZip === "City 3") 

最后,你申请的价值,HiddenZipField的方式也是不正确的。 val()函数将您希望设置的值作为参数,例如val(CityAndZip)

+1

我只是做'['City 1','City 2','City 3']。indexOf(CityandZip)!== -1'。这是一个小清洁剂。 – Blender 2013-02-19 20:57:25

+0

是的,我也倾向于这样做,但我认为在这种情况下,OP可能更有助于指出他们的代码为什么不起作用。 – ChrisC 2013-02-19 21:00:09

+0

更新了代码,修复了发现的错字。谢谢。 – Sakhar 2013-02-19 21:04:28

0
$("#HiddenCityField").val() = CityandZip; 

这是行不通的。你需要做的:

$("#HiddenCityField").val(CityandZip); 
+0

是的,这是我的不好,我已经修复了代码,我也更新了代码。我仍然有问题。谢谢。 – Sakhar 2013-02-19 20:58:47

0

这就是我如何得到它的工作方式,在比较选择输入字段和数组的代码下面,然后将值分配给隐藏字段。

$(function() { 
var arrCities = [ "City 1", "City 2", "City 3" ]; 

var arrZip = [ "11111", "22222", "33333" ]; 

$("#front-form").submit(function (event) { 
     $("#citynzip :selected").each(function (i, selected) { 
      if ($.inArray($(selected).val(), arrCities) > -1) { 
       $(selected).each(function(i, selected) { 
        $("#front-form").append("<input type='hidden' name='City[]' id='City' value='" + $(selected).val() + "' />") 
       }); 
      } else if ($.inArray($(selected).val(), arrZip) > -1) { 
       $(selected).each(function(i, selected) { 
        $("#front-form").append("<input type='hidden' name='Zip[]' id='Zip' value='" + $(selected).val() + "' />") 
       }); 
      } else { 
       event.preventDefault(); 
       window.location.href = "http://www.website.com/" 
      } 
     }); 
    }); 
}); 

感谢大家在这里,并与一些研究,我能够弄明白。