如何使用sparkbox的sbCustomSelect函数动态管理组合框

时间:2014-05-05 15:28:02

标签: jquery

我需要动态管理组合框(动态更改选项),但我无法重新初始化组合框。 在开始时,组合填充就绪函数$(document).ready(function():

用于设置组合框选项的函数是sparkbox的sbCustomSelect()。 当发生特定情况时,我需要清空组合框选项并添加新选项。但是在更改后会显示两个组合框:包含所有启动选项的旧组合框和添加了新选项的新组合。 任何的想法?提前谢谢....

1 个答案:

答案 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);
}

我希望这很清楚,因为代码不在一个文件中。