2015-02-05 65 views
1

我有多個下拉菜單,即part_no,part_category,品牌和型號。我正在顯示庫存中的車輛部件數量。有沒有一種優雅的方式來檢查多個條件?

鑑於當我通過向下拉菜單中提供更多值而變得更加具體時,必須顯示較少類型的零件。 (就像一個過濾)

,我試圖模擬天生在這個網站上找到的下拉菜單一個很好的例子:http://www.sgcarmart.com/used_cars/listing.php?MMO=Mini&RPG=20&MOD=Austin

是否有這樣做的檢查(通過所有可能的組合)的一個更好的辦法,而不是這樣做:

  //Values from my dropdown menus 
      var carmake= $('#car_make').val(); 
      var carmodel= $('#car_model').val(); 
      var partname= $('#part_name').val(); 
      var partcategory= $('#part_category').val(); 

      if(carmake==data['carmake']) 
      { 
      //do something 
      } 
      else if (carmake==data['carmake'] && partname==data['partname']) 
      { 
      //do something   
      } 
      else if (carmodel==data['carmodel'] && partname==data['partname']) 
      { 
      //do something   
      } 
      else if (carmodel==data['carmodel'] && partname==data['partname'] &&partcategory==data['partcategory']) 
      { 
      //do something   
      } else if (carmodel==data['carmodel'] && partname==data['partname'] &&partcategory==data['partcategory' &&partname==data['partname']) 
      { 
      //do something   
      } 
      . 
      . 
      . 
      . 
      .    
+3

第一個'else if'將永遠不會執行。只有當carmake == data ['carmake']'爲false時才執行。但如果這是錯誤的,那麼carmake == data ['carmake'] && anything'也是如此。 – Barmar

+0

嵌套'if'是你的朋友! –

+0

@Barmar是啊,這正是我想要的。如果組合匹配。它應該立即退出檢查其他各種條件,如果語句 – user3659911

回答

3

把所有的測試值在一個對象的屬性名稱是一樣data。然後遍歷所有屬性以查看它們是否全部相同:

var search = { 
    carmake: $("#car_make").val(), 
    carmodel: $("#car_model").val(), 
    partname: $("#part_name").val(), 
    partcategory: $("#part_category").val() 
}; 

var match = true; 
$.each(search, function(prop, value) { 
    if (value !== "" && value != data[prop]) { // only compare if the dropdown was selected 
     match = false; 
     return false; // break out of the loop 
    } 
}); 

if (match) { 
    // do something 
} 
+0

@ user3659911您嘗試進行的編輯是錯誤的。沒有必要從迭代函數返回true; '.each()'保持循環,除非函數顯式返回'false'。 – Barmar

+0

感謝您的回答!我在源代碼中添加了您的代碼。當組合爲false時,匹配將被設置爲false。找到組合後,匹配必須設置爲true。爲了執行if(match)語句。 – user3659911

+0

'match'在循環之前被初始化爲'true'。如果'data'不匹配,它只會被設置爲'false'。 – Barmar

相關問題