javascript - Select2 未正确渲染
问题描述
下面的代码可以完美地工作,而无需在元素上调用 select2。它添加了所有选项并按应有的方式呈现。
let selectInput = $('<select ' +
'class="checklist-input" ' +
'id="' + inputId + '" ' +
'data-checklist-item-field="' + field + '" ' +
'data-checklist-item-id="' + itemId + '" ' +
(disabled ? 'disabled' : '') +
'>');
$.each(data.summary_input_options, (_, val) => {
selectInput.append(`<option value="${val.value}">${val.value}</option>`);
});
selectInput.val(value);
return selectInput;
但是,第二次我向 jQuery 对象添加了一个 select2 调用,事情变得很奇怪,并且 select2 大部分时间都无法显示,如果它确实出现了 - 第二次我更改了 select 中的值,它又消失了.
selectInput.val(value).select2();
似乎 select2 被正确调用,但没有插入 HTML 来呈现选择,因为如下所示,select2 正确地将其可访问性标签插入到原始选择中:
<select class="checklist-input select2-hidden-accessible" id="checklist-summary-52" data-checklist-item-field="summary" data-checklist-item-id="52" data-select2-id="checklist-summary-52" tabindex="-1" aria-hidden="true">
<option value="Yes" data-select2-id="29">Yes</option>
<option value="No">No</option>
<option value="Maybe">Maybe</option>
</select>
如果有人以前遇到过这个问题或有任何想法,请告诉我
解决方案
您错过了 css 类,即select2。请添加它。
您必须先将 html 附加到 DOM,然后调用select2()函数。
<select class="checklist-input select2 select2-hidden-accessible" id="checklist-summary-52" data-checklist-item-field="summary" data-checklist-item-id="52" data-select2-id="checklist-summary-52" tabindex="-1" aria-hidden="true">
<option value="Yes" data-select2-id="29">Yes</option>
<option value="No">No</option>
<option value="Maybe">Maybe</option>
</select>
// try with this small change also (optional).
selectInput.val(value);
selectInput.select2();
推荐阅读
- batch-file - 没有可见控制台的 NSSM 启动批处理脚本
- javascript - Javascript:如何传递同一类的对象并访问方法?
- python - pygame draw.rect() 和 draw.line() 函数似乎相互覆盖
- c# - 从作为 AWS Lambda 函数运行的 AWS ApiGateway ASP.NET Core 3 Web API 返回文件
- javascript - 如何格式化“for循环”以采用reduce()?
- javascript - HERE Maps Info 气泡未使用 React 正确呈现
- azure - 在 YAML 管道中访问管道队列变量
- python - 训练 Keras 对抗网络时的矛盾结果
- flutter - 当用户在flutter中使用facebook登录时在哪里保存用户信息
- c# - 在单个聚合中处理域事件?