【问题标题】:select2.js - How to make selection active from data attributeselect2.js - 如何从数据属性中激活选择
【发布时间】:2020-10-23 09:22:55
【问题描述】:

我有以下html代码:

 <div class='multiWrapper'>
     <select id="multi" class="js-dropdown-from-code">
         <optgroup class='def-cursor' label='Code' data-city='Description'>
             <option data-city="" data-id="0">Select unit...</option>
             <option data-city="New York" data-id="1">USA</option>
             <option data-city="London" data-id="2">UK</option>
         </optgroup>
     </select>
 </div>

其中选择被转换成一个带有两列的 Select2 下拉列表。

$('#multi').select2({
    width: '100%',
    formatResult: formatResultMulti,
    dropdownCssClass: 'bigdrop'
});

使用此功能。

function formatResultMulti(data) {
    var city = $(data.element).data('city');
    var classAttr = $(data.element).attr('class');
    var hasClass = typeof classAttr != 'undefined';
    classAttr = hasClass ? ' ' + classAttr : '';
    var $result = $(
        '<div class="row" style="font-size: 0.8125rem;">' +
        '<div class="col-md-6 col-xs-6' + classAttr + '">' + data.text + '</div>' +
        '<div class="col-md-6 col-xs-6' + classAttr + '">' + city + '</div>' +
        '</div>'
    );
    return $result;
}

所有这些都有效,我的问题是当我尝试加载具有特定值的 select2 以启动时。

通常我会使用 $('#multi).val('').trigger('change') 来设置值,但由于我使用的是选项组,我不确定如何执行一样。

谁能把我从我的无知中解救出来。

更新:

我添加了缺少的 HTML 选项标签。如您所见,我没有使用值标签,而是使用数据属性 data-id。

我发现使用以下作品

$("#multi option[data-id='30']").prop("selected", true).trigger('change');

但它没有设置基础值,因此在提交表单时,验证无法识别更改触发器。

【问题讨论】:

  • "但它没有设置基础值,所以在提交表单时,验证无法识别更改触发器。" - 不确定那是什么意思?或者你到底想要做什么?为什么您的选项没有设置value='&lt;something&gt;'?等

标签: javascript jquery jquery-select2


【解决方案1】:

尝试使用

$("#multi").val("").trigger('change.select2');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2018-10-24
    • 1970-01-01
    相关资源
    最近更新 更多