如何使用Select2按代码设置所选元素?

时间:2014-01-15 10:41:24

标签: jquery jquery-select2

我以Json格式传递给Select2组件值,而不是我想要选择其中一个值。

这是我的代码:

    $.getJSON(rootUrl+'getAllValues', {
        valu : $('#_valu_id').val()
    }, function(data) {

        var html = '<option value=""></option>';
        var len = data.length;

        for ( var i = 0; i < len; i++) {
            if(data[i].myfield == $('#myfield').val()){
                html += '<option value="' + data[i].id + '" selected>'+ data[i].myfield + '</option>';
            }else{
                html += '<option value="' + data[i].id + '">'+ data[i].myfield + '</option>';
            }
        }

        $('#_mySelect_id').html(html);

    });

但仅使用selected属性,它无法正常工作。

编辑:这是html变量:

<option value=""></option>
<option value="30">U</option>
<option value="31">G</option>
<option value="32" selected="selected">A</option>
<option value="93">H</option>

我可以这样做吗?

提前感谢

1 个答案:

答案 0 :(得分:2)

更改Select2的HTML内容后,您必须更新所选的值:

    function(data) {

        var html = '<option value=""></option>';
        var len = data.length;

        for ( var i = 0; i < len; i++) {
            if(data[i].myfield == $('#myfield').val()){
                var selected_value = data[i].id; // Remember selected value
                html += '<option value="' + data[i].id + '" selected>'+ data[i].myfield + '</option>';
            }else{
                html += '<option value="' + data[i].id + '">'+ data[i].myfield + '</option>';
            }
        }

        $('#_mySelect_id').html(html);

        $('#_mySelect_id').select2().select2('val',selected_value); // Update selected value
    }