我需要动态管理组合框(动态更改选项),但我无法重新初始化组合框。 在开始时,组合填充就绪函数$(document).ready(function():
用于设置组合框选项的函数是sparkbox的sbCustomSelect()。 当发生特定情况时,我需要清空组合框选项并添加新选项。但是在更改后会显示两个组合框:包含所有启动选项的旧组合框和添加了新选项的新组合。 任何的想法?提前谢谢....
答案 0 :(得分:0)
在index.html中:
<div class="title">
<h2 class="">SR Ref #<a href="javascript:" class="detailsSrRef"></a></h2>
<select class="event detailsEvents" data-role="none" id="selEvent">
</select>
</div>
在script.js中,ready函数中有初始化:
$(document).ready(function () {
.....
var serviceRequestDetailsController = new .ServiceRequestDetailsController();
serviceRequestDetailsController.setEventControllers([
new AcceptEventController(),
new RejectEventController(),
new TravelToMaterialEventController(),
new TravelToCustomerEventController(),
new ArrivedAtCustomerEventController(),
new ValidateOOSEventController(),
new CompleteActionPlanEventController(),
new ReturnPartsEventController(),
new AddTextEventController(),
new ExceptionEventController(),
new FixAcceptedEventController()
]);
.....
}
在action.js中:
var html = '<option data-placeholder="true" >Select Event</option>';
for (var idx = 0; idx < eventControllers.length; idx++) {
//Fix
if (!(eventControllers[idx].getEventName() == com.ibm.client.dto.ServiceRequest.TRAVEL_TO_MATERIALS_STATUS))
if (!(eventControllers[idx].getEventName() == com.ibm.client.dto.ServiceRequest.PARTS_RETURNED_STATUS))
if (!(eventControllers[idx].getEventName() == com.ibm.client.dto.ServiceRequest.FIX_ACCEPTED_STATUS))
html += '<option value="' + utility.htmlEncode(eventControllers[idx].getEventName()) + '">' +
utility.htmlEncode(eventControllers[idx].getEventName()) + '</option>'
}
$('.detailsEvents').each(function(){
$(this).html(html);
$(this).change(function() {
var value = $(this).find(":selected").val();
$(this).sbCustomSelect();
});
这些是我在action.js函数中添加新选项的更改:
if (logicalStatus=="TAK"){
$('#selEvent').empty();
var newOption=$('<option value="' + utility.htmlEncod (com.ibm.client.dto.ServiceRequest.ADD_TEXT_STATUS) + '">' +
utility.htmlEncode (com.ibm.client.dto.ServiceRequest.ADD_TEXT_STATUS) + '</option>');
$('#selEvent').append(newOption);
}
我希望这很清楚,因为代码不在一个文件中。