【发布时间】:2018-10-22 07:15:44
【问题描述】:
当从 Ajax 获取数据到选择下拉列表中时。在下拉列表中选择特定值时出错。
未捕获的类型错误:无法设置未定义的属性“已选择”
在 Chosen.result_select (chosen.jquery.js:1158)
在 Chosen.search_results_mouseup (chosen.jquery.js:1059)
在 HTMLUListElement。 (chosen.jquery.js:739)
在 HTMLUListElement.dispatch (jquery-2.2.3.min.js:3)
在 HTMLUListElement.r.handle (jquery-2.2.3.min.js:3)
$(document).ready(function(){
$("#shopSelect .chosen-search-input").keyup(function(){
var key = $('#shopSelect .chosen-search-input').val();
if(key){
$.ajax({
url: '<?php echo base_url("admin/shopSearch"); ?>',
data: {key:key},
type: 'POST',
dataType: "json",
cache:false,
success: function (data) {
$('#shopSelect ul.chosen-results').empty($("#shopSelect ul.chosen-results").append("<li class='disabled-result result-selected' data-option-array-index='0'>Select One</li>"));
data.forEach(function(entry) {
$("#shopSelect ul.chosen-results").append("<li class='active-result' data-option-array-index='"+entry.id+"'>"+entry.name+"</li>");
});
}, error: function (err) {
if (typeof (failure) == 'function') {
console.log(err)
}
}
});
$("#shopSelect .active-result").keyup(function(){
$("#shopSelect ul.chosen-results").trigger("chosen:updated");
});
}
});
});
但是当我在没有 Ajax 的情况下使用时。给静态下拉选项值它的工作完美。我正在使用chosen
<select name="shops" id="shops" class="form-control chosen-select" tabindex="2" style="width: 100%;">
<option selected="" value="" disabled="">Select One</option>
<option value="1">OptionOne</option>
<option value="2">OptionTwo</option>
<option value="3">OptionThree</option>
</select>
【问题讨论】:
-
目前尚不清楚确切的问题是什么,但是您在
keyup事件处理程序中附加了keyup事件处理程序,这似乎是个坏主意。查看事件委托。 -
我们可以看到你的ajax请求的结果吗?
-
另外,
empty不会对您传递给它的参数做任何事情。 -
尝试在你的 ajax 成功回调中初始化选择。
标签: javascript jquery html