【问题标题】:Chosen JavaScript can't click/select on update dynamically选择的 JavaScript 不能点击/选择动态更新
【发布时间】:2015-08-24 23:06:00
【问题描述】:

我有一个网站,我需要根据媒体系列过滤媒体类型列表。即:如果选择print,则必须只显示与打印有关的选项,如果选择digital,则必须仅显示与数字有关的选项。

我可以用新值更新列表,但它们不再可点击?

以下是截图:

我已经在使用:$("#mec_id").trigger("liszt:updated"); 其中mec_id 是选择的 id。这是选择media family 后的HTML,当尝试单击media type 时,它没有提供单击/选择选项的选项。在代码中我选择了print,因为那里的下拉菜单只有一个值(以节省代码空间)。

HTML:

<select id="mec_id" class=" chosen-select" tabindex="-1" multiple="" style="width: 100%; display: none;" data-placeholder="Select Media Type" name="mec_id[]">
    <option data-val="12" value="print">print</option>
</select>
<div id="mec_id_chosen" class="chosen-container chosen-container-multi" style="width: 349px;" title="">
    <ul class="chosen-choices">
        <li class="search-field">
            <input class="default" type="text" style="width: 132px;" autocomplete="off"   value="Select Media Type" tabindex="8">
        </li>
    </ul>
    <div class="chosen-drop">
        <ul class="chosen-results">
            <li class="active-result" data-option-array-index="12">print</li>
        </ul>
    </div>
</div>

JavaScript/JQuery(AJAX Success 调用的函数):

   success: function (data) {
                var ul = document.createElement('ul');
                ul.className = "chosen-results";
                for (var i = 0; i < data.length; i++) {
                    if (i == 0) {
                        $('#media_types .chosen-drop').contents().remove();
                        $('#mec_id').contents().remove();
                    }
                    var text = data[i].text;
                    var li = document.createElement('li');
                    li.className = "active-result";
                    li.setAttribute('data-option-array-index', data[i].id);
                    li.innerHTML = text;
                    ul.appendChild(li);
                    // create options
                    var option = document.createElement('option');
                    option.setAttribute('data-val', data[i].id);
                    option.value = data[i].text;
                    option.text = data[i].text;
                    document.getElementById("mec_id").appendChild(option);
                }
                $('#mec_id_chosen .chosen-drop').append(ul);
                $("#mec_id").trigger("liszt:updated");
            },

【问题讨论】:

  • 你用什么插件来选择输入?

标签: javascript jquery ajax jquery-chosen


【解决方案1】:

你确定不是chosen:updated 而不是liszt:updated

我没有看到任何对 liszt 的引用 - http://harvesthq.github.io/chosen/

【讨论】:

    猜你喜欢
    • 2013-01-25
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多