2015-11-11 18 views
1

考慮下面的HTML被填充:後選定的編程設置下拉列表使用JSON

<select class="form-control" id="resourceName"></select> 

我填充select的數據與來自JSON:

jQuery.getJSON("/Booking/GetMachine", { 
    TechnologyName: technologyName, 
    EquipmentTypeName: equipmentTypeName 
}, function (machines) { 
    var $select = $('#resourceName'); 
    $('#resourceName').empty(); 
    $.each(machines, function (i, machine) { 
     var option = $('<option>', { 
      value: machine.trim() 
     }).html(machine.trim()).appendTo($select); 
    }); 
}); 

一旦popualated我想設置的設定值與變量匹配的下拉列表。

jQuery("#resourceName").val(resourceName); 

但是它不能按預期工作。如果有人會檢查我是否犯了錯誤,我會很感激。謝謝你們

+2

如果設置在回調函數中的'select'的'VAL()','的元素option'已設置後,你的代碼應該工作正常。 –

+0

'resourceName'的值是否與您添加的其中一個選項的值相匹配? –

+0

謝謝@RoryMcCrossan!在這裏,我試圖找出發現的建議後發生了什麼問題。它像一個魅力!謝謝你的關注:) – Khairul

回答

2

如果你設置回調函數內selectval(),在option元素已設置後,你的代碼應該很好地工作:

jQuery.getJSON("/Booking/GetMachine", { 
    TechnologyName: technologyName, 
    EquipmentTypeName: equipmentTypeName 
}, function (machines) { 
    var $select = $('#resourceName'); 
    $('#resourceName').empty(); 
    $.each(machines, function (i, machine) { 
     var option = $('<option>', { 
      value: machine.trim() 
     }).html(machine.trim()).appendTo($select); 
    }); 
    $("#resourceName").val(resourceName); // < set the value here 
}); 

這是因爲AJAX調用是異步的。這意味着如果您嘗試在回調之外設置值,則實際上在請求完成之前設置值,這意味着沒有option元素可供選擇。

0

我認爲此代碼的工作

jQuery.getJSON("/Booking/GetMachine", { 
     TechnologyName: technologyName, 
     EquipmentTypeName: equipmentTypeName 
    }, function (machines) { 
     var $select = $('#resourceName'); 
     $('#resourceName').empty(); 
     $.each(machines, function (i, machine) { 
      var option = $('<option>', { 
       value: machine.trim() 
      }).html(machine.trim()).appendTo($select); 
     }).promise().done(function(){  $("#resourceName").val(resourceName);// < set the value here }); 

    }); 
相關問題