0

我是 jQuery 的新手,但这就是我想要做的。

我有一个名为 City 和 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"; 

 }

 });

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

4

4 回答 4

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 中。如果是,请将其添加到隐藏字段。

如果选择不在数组中,我不知道您想如何处理。现在看起来如果任何选择不在数组中,即使有些是,您希望页面重定向并且仅当用户所做的所有选择都存在于数组中时才继续。这应该提供一个起点。

于 2013-02-19T21:38:19.333 回答
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/"
            }
        });
    });
});

感谢这里的每个人,通过一些研究,我能够弄清楚。

于 2013-02-20T16:40:10.983 回答
0
$("#HiddenCityField").val() = CityandZip;

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

$("#HiddenCityField").val(CityandZip);
于 2013-02-19T20:56:21.503 回答
0

你有一个错字

window.location.herf

此外,您的 OR 应如下所示:

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

最后,您将值应用于 HiddenZipField 的方式也不正确。val() 函数将您希望设置的值作为参数,例如val(CityAndZip)

于 2013-02-19T20:55:06.353 回答