2014-12-23 166 views
0

我試圖做3連接與jQuery選擇選項,我有麻煩與第三選擇。 我不明白爲什麼doesen't不考慮城市價值,這是出現選擇箭頭,但不是選擇。jQuery依賴選擇選項

這裏我的代碼使用jQuery:

$(document).ready(function() { 

//Initializing arrays with city names 
var USA = [ 
    {display: "Washington, D.C.", value: "WashingtonDC"}, 
    {display: "Alaska", value: "Alaska"}, 
    {display: "New York", value: "New-York"}, 
    {display: "Florida", value: "Florida"}, 
    {display: "Hawaii", value: "Hawaii"}, 
    {display: "California", value: "California"}]; 

var AUSTRALIA = [ 
    {display: "Canberra", value: "Canberra"}, 
    {display: "Sydney", value: "Sydney"}, 
    {display: "Melbourne", value: "Melbourne"}, 
    {display: "Perth", value: "Perth"}, 
    {display: "Gold Coast ", value: "Gold-Coast"}]; 

var FRANCE = [ 
    {display: "Paris", value: "Paris"}, 
    {display: "Avignon", value: "Avignon"}, 
    {display: "Strasbourg", value: "Strasbourg"}, 
    {display: "Nice", value: "Nice"}]; 

//REGION 

//Function executes on change of first select option field 
$("#country").change(function() { 

    var select = $("#country option:selected").val(); 

    switch (select) { 
     case "USA": 
      city(USA); 
      break; 

     case "AUSTRALIA": 
      city(AUSTRALIA); 
      break; 

     case "FRANCE": 
      city(FRANCE); 
      break; 

     default: 
      $("#city").empty(); 
      $("#city").append("<option>--Select--</option>"); 
      break; 
    } 
}); 

var ONE = [ 
    {display: "One", value: "One2"}, 
    {display: "Two", value: "Two2"}]; 

var TWO = [ 
    {display: "Three", value: "Three2"}, 
    {display: "Four", value: "Four2"}]; 

var THREE = [ 
    {display: "Five", value: "Five2"}, 
    {display: "Six", value: "Six2"}]; 


//Function executes on change of second select option field 
$("#city").change(function() { 

    var select = $("#city option:selected").val(); 

    switch (select) { 
     case "ONE": 
      region(ONE); 
      break; 

     case "TWO": 
      region(TWO); 
      break; 

     case "THREE": 
      region(THREE); 
      break; 

     default: 
      $("#region").empty(); 
      $("#region").append("<option>--Select--</option>"); 
      break; 
    } 
}); 

//Function To List out Cities in Second Select tags 
function city(arr) { 
    $("#city").empty();//To reset cities 
    $("#city").append("<option>--Select--</option>"); 
    $(arr).each(function (i) {//to list cities 
     $("#city").append("<option value=\"" + arr[i].value + "\">" + arr[i].display + " </option>") 
    }); 
} 

    //Function To List out Cities in Second Select tags 
function region(arr) { 
    $("#region").empty();//To reset cities 
    $("#region").append("<option>--Select--</option>"); 
    $(arr).each(function (i) {//to list cities 
     $("#region").append("<option value=\"" + arr[i].value + "\">" + arr[i].display + " </option>") 
    }); 
} 
}); 

第三選擇doesen't採取的對象,有人知道爲什麼嗎? 感謝

JSFIDDLE

+1

'city'的值是'WashingtonDC'等,但是在$('#city')。change()'處理程序中,您正在查找值''ONE',''TWO'或'「三」「,這將永遠不會匹配。所以你打默認情況下,清空'地區'選擇。 –

+0

城市的'select'元素的價值是城市的名稱,而不是''一個「」兩個「或」三個「' – AdityaParab

+0

我要說var select = $(」#city option:selected「 ).VAL();選擇華盛頓...但保羅說這一切 – Geomorillo

回答

0

你只有ONETWOTHREE那裏。沒有一個是匹配的城市名稱。 我認爲你只是忘記將它們設置爲正確的值而不是佔位符。

0

您正在閱讀city值以顯示區域。

您的代碼假定city的值將爲ONETWOTHREE但它從來不是這樣。

因此,您始終可以應用default城市值。

1

這裏的問題: Wrong Value Switching

從你所看到的,你給了錯誤的值,switch語句,因此代碼不執行。

0

從我所看到的失敗的選擇必須#REGION爲由於城市功能#city將充滿了城市的名字,如尼斯,巴黎,所以當

$('#city').change() 

運行它通常會因爲Nice或Paris以及第一個數組中指定的其他值都不是'ONE','TWO'或'THREE',因此輸入默認值。

我不明白你對地區和城市的意圖,因爲每個國家都有某些城市,但不是每個城市的某些地區,你的邏輯在這裏是有缺陷的,不要擔心它的共同點,但你必須認真思考並注意你在做什麼。要更好地理解$('#city')中的變化,請使用console.log(select);運行它並檢查您的控制檯,您將看到第二個選擇的值將永遠不會是「一個」,「兩個」或「三個」,因此將始終在您的默認聲明的基礎上創建一個空選擇

+0

邏輯不是很重要...這是一個例子。地區可以是其他區域,我感興趣的是我在城市變更後通過一組價值:) – WolF

+0

我的意思是在第二個開關中更改「巴黎」的'ONE',運行它,你會明白我的意思。 (顯然選擇法國在第一選擇和巴黎在第二個) – zardilior

+0

是的作品!所以我需要爲不同地區做很多聲音...... – WolF