2015-04-23 71 views
1

我已經用json-data填充了我的選擇下拉菜單。選擇的內容取決於之前選擇和廣播的選擇。當我決定選擇另一個單選按鈕時,是否可以「重置」所有選擇?'重新選擇'取決於其他選擇(jQuery)

我使用下面的代碼:

function changeCustomerType(value) { 
    selectedCustomerType = value; 

    if(typeof dateTypeCol === 'undefined') { 
     dateTypeCol = temp[value]; 
     console.log(dateTypeCol); 
    } else { 
     dateTypeCol = ''; 
     yearCol = ''; 
     console.log(yearCol); 
     dateTypeCol = temp[value]; 
     console.log(dateTypeCol); 
    } 
} 

function changeDateType(value) { 
    console.log(selectedCustomerType); 
    $(dateFieldset).show(); 
    yearLabel.show(); 
    selectedDateType = value; 

    switch(selectedDateType) { 
    case 'Weekend': 
     $(yearSelect).selectedIndex = 0; 
     $(monthSelect).hide(); 
     $(dateSelect).hide(); 
     break; 
    case 'Midweek': 
     $(yearSelect).selectedIndex = 0; 
     $(monthSelect).hide(); 
     $(dateSelect).hide(); 
     break; 
    case 'Week': 
     $(yearSelect).selectedIndex = 0; 
     $(monthSelect).hide(); 
     $(dateSelect).hide(); 
     break 
    } 

    if(typeof yearCol !== 'undefined') { 
     yearCol = ''; 
     $(yearSelect).empty(); 

     yearCol = dateTypeCol[value]; 
     console.log(yearCol); 

     $.each(yearCol, function(key, value) { 
      $(yearSelect).append('<option value=' + value + '>' + key + '</option>'); 
     }); 
    } else { 
     yearCol = ''; 
     $(yearSelect).empty(); 

     yearCol = dateTypeCol[value]; 
     console.log(yearCol); 

     $(yearSelect).append('<option value></option>'); 
     $.each(yearCol, function(key, value) { 
      $(yearSelect).append('<option value=' + value + '>' + key + '</option>'); 
     }); 
    } 

} 

function getMonths(year) { 
    selectedYear = year; 
    $(dateSelect).hide(); 
    $(monthSelect).show(); 

    if(typeof monthCol === 'undefined') { 
     monthCol = yearCol[year]; 
     console.log(monthCol); 

     $.each(monthCol, function(key, value) { 
      $(monthSelect).append('<option value=' + value + '>' + key + '</option>'); 
     }); 
    } else { 
     monthCol = ''; 
     $(monthSelect).empty(); 

     monthCol = yearCol[year]; 
     console.log(monthCol); 

     $(monthSelect).append('<option value></option>'); 
     $.each(monthCol, function(key, value) { 
      $(monthSelect).append('<option value=' + value + '>' + key + '</option>'); 
     }); 
    } 
} 

function getDates(month) { 

    switch(selectedDateType) { 
    case 'Weekend': 
     $(dateSelect).show(); 
     break; 
    case 'Midweek': 
     $(dateSelect).show(); 
     break; 
    case 'Week': 
     $(dateSelect).show(); 
     break 
    } 

    //console.log(selectedCustomerType, selectedDateType, selectedYear, month); 

    if(typeof dateCol === 'undefined') { 
     dateCol = monthCol[month]; 
     console.log(dateCol); 

     $.each(dateCol, function(key, value) { 
      console.log(value); 
      $.each(value, function(key1, value1) { 
       if(key1 == 'id') { 
        id = value1; 
       }; 
      }); 
      $.each(value, function(key2, value2) { 
       if(key2 == 'startDate') { 
        $(dateSelect).append('<option value=' + id + '>' + value2 + '</option>'); 
       }; 
      }); 
     }); 
    } else { 
     dateCol = ''; 
     $(dateSelect).empty(); 

     $.each(dateCol, function(key, value) { 
      console.log(value); 
      $.each(value, function(key1, value1) { 
       if(key1 == 'id') { 
        id = value1; 
       }; 
      }); 
      $(monthSelect).append('<option value></option>'); 
      $.each(value, function(key2, value2) { 
       if(key2 == 'startDate') { 
        $(dateSelect).append('<option value=' + id + '>' + value2 + '</option>'); 
       }; 
      }); 
     }); 
    } 
} 

現狀:

current situation

這是一個有點亂了,需要在此之後,以nicen它一點。 如果需要其他信息,請詢問!這是新的。 在此先感謝!

+0

PS我知道if語句真的是多餘的,需要加以改進,只是一個快速修復。 – Hees1989

+0

您是否有任何收聽者設置了收音機的變化事件?類似這樣:$(「input [name ='radio']」)。change(function(){})在客戶類型初始化後? –

+0

'customerType'和'dateType'單選按鈕上的onclick和onchange。如果這就是你的意思? – Hees1989

回答

0

顯然我可以通過隱藏和顯示選擇來獲得所需的結果。 該代碼仍然有點凌亂,但對於同樣的問題的人,仰視:​​

謝謝!

function changeCustomerType(value) { 
    selectedCustomerType = value; 

    dateTypeRadio.prop('checked', false); 
    $(dateFieldset).hide(); 
    yearLabel.hide(); 

    if(typeof dateTypeCol === 'undefined') { 
     dateTypeCol = temp[value]; 
     console.log(dateTypeCol); 
    } else { 
     dateTypeCol = ''; 
     yearCol = ''; 
     console.log(yearCol); 
     dateTypeCol = temp[value]; 
     console.log(dateTypeCol); 
    } 
} 

function changeDateType(value) { 
    selectedDateType = value; 

    $(dateFieldset).hide(); 
    yearLabel.hide(); 

    if(typeof(dateTypeCol) == 'undefined'){ 
     dateTypeRadio.prop('checked', false); 
     $(dateFieldset).hide(); 
     console.log('Selecteer eerst Soort Groep.'); 
     return; 
    } else { 
     $(dateFieldset).show(); 
     console.log('Groepsoort gekozen, geef datumselectie weer..'); 
    }