2010-08-10 117 views
2

我有一個公司的下拉列表。我也有一些聯繫人列表(primary_contact,sales_contact,insurance_contact),它們都屬於「contact」類。當公司更改時,我使用以下代碼更新可用聯繫人列表:更新下拉選項,但保持選中

$('#company').change(function() { 
     var company = $(this)[0].value.toString(); 
     $.getJSON('<%= ResolveUrl("~/Subcontracts/CompanyContacts/") %>' + company, null, function (data) { 
      $('.contact').empty().append("<option value=''>**Select Contact**</option>"); 
      $.each(data, function (index, optionData) { 
       $('.contact').append("<option value='" + optionData.contact_id + "'>" + optionData.contact_name + "</option>"); 

      }); 
     }); 
    }); 

某些聯繫人適用於多個子公司。如果先前選擇的聯繫人顯示在新的聯繫人列表中,我希望他們仍然被選中。因此,如果先前選擇的sales_contact位於列表中,請選擇它們。與primary_contact和insurance_contact相同。我怎樣才能做到這一點?

回答

2

不知道這是否是「最佳」的方式,但我得到了它做這個工作:

$('#company').change(function() { 
      var company = $(this)[0].value.toString(); 
      var primary_contact = $('#primary_contact').val(); 
      var safety_contact = $('#safety_contact').val(); 
      var insurance_contact = $('#insurance_contact').val(); 
      $.getJSON('<%= ResolveUrl("~/Subcontracts/CompanyContacts/") %>' + company, null, function (data) { 
       $('.contact').empty().append("<option value=''>**Select Contact**</option>"); 
       $.each(data, function (index, optionData) { 
        $('.contact').append("<option value='" + optionData.contact_id + "'>" + optionData.contact_name + "</option>"); 
       }); 
       $('#primary_contact').val(primary_contact); 
       $('#safety_contact').val(safety_contact); 
       $('#insurance_contact').val(insurance_contact); 
      }); 
     }); 
0

這給一試:

$('#company').change(function() { 
    var company = $(this)[0].value.toString(); 

    for (var i=0; i<this.options.length; i++){ 
     if (this.options[i].selected==true){ 
      var contact = this.options[i].value.toString(); 
      break; 
     } 
    } 



     $.getJSON('<%= ResolveUrl("~/Subcontracts/CompanyContacts/") %>' + company, null, function (data) { 
      $('.contact').empty().append("<option value=''>**Select Contact**</option>"); 
      $.each(data, function (index, optionData) { 
     if (optionData.contact_id == contact) 
        $('.contact').append("<option value='" + optionData.contact_id + " selected='selected''>" + optionData.contact_name + "</option>"); 
     else 
       $('.contact').append("<option value='" + optionData.contact_id + "'>" + optionData.contact_name + "</option>"); 
      }); 
     }); 
    });