2013-02-19 83 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/" 
      } 
     }); 
    }); 
}); 

感謝大家在這裏,並與一些研究,我能夠弄明白。