您的位置:首页 > Web前端 > BootStrap

Bootstrap的Select异步刷新时有问题

2014-10-22 15:29 253 查看
使用bootstrap的select控件后,用$().append()option,发现<ul>里面的内容没有跟着改变,<select id="OS" class="span2 chosen chzn-done">和<div id="OS_chzn" class="chzn-container undefined chzn-container-single">里面的<ul>是对应的。用JSON返回的数据异步刷新select时,ul里面的值没有改变,尝试过下面两张方法都不行:

1. 这种可以添加Select里面的Option,但是不能改变div里面ul里面的值。页面展示没有刷新。 

var ajaxUrl = '/config/loadTypeValues?page_no=1&page_size=100&searchContent=' + typeName;
$.ajax({
type:'get',
url:ajaxUrl,
dataType:'json',
cache:false,
success:function(data){
alert(data);
for (var i=0; i < data.length; i++) {
$('#' + typeName).append("<option value=" + data[i][3] + ">" + data[i][1]+ "</option>");
}
},
error:function(){
jAlert('There are some errors happened');
}
});


2.  下面这种是不能改变Select里面的值,可以刷新改变显示的option元素,也就是页面展示有变化,就是ul里面的值变了,但是选不中你点击的那个option。

$('#' + typeName + '_chzn ul').empty();
//                                     $('#' + typeName).append("<option value=''>-</option>");
//                                     $('#' + typeName + '_chzn ul').append("<li class='active-result' id=" + typeNameStr + "_chzn_o_0>-</li>");
for (var i=0; i < data.length; i++) {
//                                         $('#' + typeName).append("<option value=" + data[i][3] + ">" + data[i][1]+ "</option>");
//
//                                         $('#' + typeName + '_chzn ul').append("<li class='active-result' id=" + typeNameStr + "_chzn_o_" + i + 1 + ">" + data[i][1] + "</li>");
}
},


Html:

<c:when test="${type.controlStyle == 2}">
<div class="control-group">
<label class="control-label">${type.typeName}</label>
<div class="controls" id="controls-${type.typeNameStr}">
<select id="${type.typeNameStr}" name="" class="span2 chosen"  onchange="" tabindex="0">
<c:set var="typeValues" value="${type.typeValues}"/>
<option>-</option>
<c:forEach var="typeValue" items="${typeValues}" >
<option value="${typeValue[3]}">${typeValue[1]}</option>
</c:forEach>
</select>
</div>
</div>
</c:when>


解决方法如下:

1. 看到同事的做法(点击打开链接

2. 我的做法:

Jquery:

success:function(data){
$('#' + typeNameStr).remove();
$('#' + typeNameStr + '_chzn').remove();
var optionElement = "<option>-</option>";
for (var i=0; i < data.length; i++) {
optionElement += "<option value=" + data[i][3] + ">" + data[i][1]+ "</option>";
}

var selectElement = "<select id='" + typeNameStr + "' name='' class='span2 chosen' tabindex='0'> " + optionElement + " </select>"
alert(selectElement)
$('#controls-' + typeNameStr).append(selectElement);
},
error:function(){
jAlert('There are some errors happened');
}
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Bootstrap select json