IE - select2总是得到焦点

时间:2015-03-27 04:42:45

标签: javascript jquery jquery-select2

我为我的网站使用select2插件。在IE中,遇到的问题是它总是将焦点设置在select2帧上。

<select class="form-control" name="categories[]" id="inputCate"  multiple="multiple">

// JS

$(document).ready(function(){
        var data = [{ id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' }];
        $("#inputCate").select2({
          data: data,
          maximumSelectionLength: 2,

          placeholder: "Chuyên mục"

        });
    });

Fiddle

4 个答案:

答案 0 :(得分:3)

尝试使用上一个版本Select2 v4.0.1

修复了很多错误

答案 1 :(得分:2)

IE中存在错误:应用占位符文本时会发生输入事件。所以你可以:      a)删除占位符选项      b)替换select2.js

 this.$selection.on('input', '.select2-search--inline', function (evt) {
      // Unbind the duplicated `keyup` event
      self.$selection.off('keyup.search');
    });

    this.$selection.on('keyup.search input', '.select2-search--inline',
        function (evt) {
      self.handleSearch(evt);
    })

this.$selection.on('keyup.search', '.select2-search--inline',
    function (evt) {
  self.handleSearch(evt);
});

答案 2 :(得分:0)

这是IE占位符错误。当js替换占位符IE设置焦点时。 我对jQuery和Select2 4.0.0的解决方案不好

    fixIePlaceholderSelect2 = function(select) {
        var placeholderFix = select.parent().find('.placeholder_ie_fix');
        if(select.val())
            placeholderFix.addClass('hide');
        placeholderFix.on("click", function () {
        select.select2("open");
            $(this).addClass('hide');
        });
        select.on("select2:open", function () {
            if(!select.val())
                placeholderFix.addClass('hide');
        });
        select.on("select2:close", function () {
            placeholderFix.removeClass('hide');
        });
    };


    fixIePlaceholderSelect2(
      $('select[name=services]')
    );
 .placeholder_ie_fix {
        position: absolute;
        margin-top: -9px;
        cursor: pointer;
    }
    .placeholder_ie_fix.hide {
        display: none;
    }
<div class="placeholder_ie_fix">My placeholder</div>
<select name="services" class="set_fix" multiple>
   <option>234</option>
</select>

答案 3 :(得分:0)

如果您避免使用重音,占位符就可以正常工作。

正如@ alexandr-nekrasov所说,问题出在占位符上,但前提是它包含重音符号。尝试 placeholder: "Chuyen mục"并查看它是否有效。需要一些测试,但它对我有用。