2

我正在使用选择框的选择插件。我正在根据 ajax 请求替换这两个框。我希望复选框在出现时预先填写。我尝试了一些东西,但它失败了。我阅读了这个文档并且无法完成。这是我在阅读文档后尝试过的。一旦 ajax 响应来了,我就在做这些事情。

var city = $('#hdnCity').val();
//**Ajax Request Goes and the response is here**//
$('#searchParams').html(responseText);
var value = $("#favCities1 option:contains("+city+")").attr('selected', 'selected');
$("#chzn-select").val(value).trigger("liszt:updated");

我无法做到这一点。帮手是可观的。先感谢您!!!

4

3 回答 3

4

问题出在最后一行:$("#chzn-select").val(value).trigger("liszt:updated");

您将不得不分开,因为$("#chzn-select").val(value)只返回 jQuery 对象,而不是<select>元素。因此,Chosen 无法接听该liszt:updated事件,因为它只收听<select>.

所以你必须这样做:

$("#chzn-select").val(city);
$("#chzn-select").trigger("liszt:updated");

请参阅工作示例:http: //jsfiddle.net/amyamy86/qQCw8/

于 2013-03-27T05:01:57.187 回答
3

在没有任何进一步信息的情况下,我想这是您如何处理 ajax 响应的问题

searchParams应该在 ajax 成功回调中更新

var city = $('#hdnCity').val();

$.ajax({
    url: '',
    ...
}).done(function(responseText){
    //**Ajax Request Goes and the response is here**//
    $('#searchParams').html(responseText);
    var value = $("#favCities1 option:contains("+city+")").attr('selected', 'selected').val();
    $("#chzn-select").val(value).trigger("liszt:updated");
})
于 2013-03-27T05:19:06.157 回答
0

Chrome 要求您现在触发一个不同的事件,http://harvesthq.github.io/chosen/。如果不触发此事件,多选框将不会更新。

$('#chzn-select').trigger('chosen:updated')

您可以通过这个 jsfiddle 看到它的实际效果,http://jsfiddle.net/LjtVa/

于 2013-09-23T23:18:29.710 回答