更新下拉选项,但保持选中状态

时间:2010-08-10 20:34:05

标签: jquery drop-down-menu

我有一份公司下拉列表。我还有一些联系人下拉列表(primary_contact,sales_contact,insurance_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 个答案:

答案 0 :(得分:3)

不知道这是否是“最佳”方式,但我通过这样做得到了它:

 $('#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);
            });
        });

答案 1 :(得分: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>");
            });
        });
    });