手机上的select2键盘问题

时间:2014-11-07 14:15:08

标签: jquery jquery-select2

当我在移动设备上使用select2时,我遇到了问题。 单击时,将显示虚拟键盘。我尝试过像

这样的东西
$('select').select2({
  shouldFocusInput: function (instance) {
        // Attempt to detect touch devices
        var supportsTouchEvents = (('ontouchstart' in window) ||
                                   (navigator.msMaxTouchPoints > 0));

        // Only devices which support touch events should be special cased
        if (!supportsTouchEvents) {
            return true;
        }

        // Never focus the input if search is disabled
        if (instance.opts.minimumResultsForSearch < 0) {
            return false;
        }

        return true;
    }
});

没有成功。即使我试着简单地使用

shouldFocusInput: false

搜索文字不断聚焦。

11 个答案:

答案 0 :(得分:1)

你试过吗

minimumResultsForSearch = -1

问题发布:https://github.com/ivaynberg/select2/issues/1541

答案 1 :(得分:1)

这对我有用。我提前为咖啡杯道歉。

单词说明:打开select2时,输入只读。当输入被聚焦时,删除只读。

$(".location-select").on("select2:open", () ->
  $(".select2-search__field").attr("readonly", true)

  $(".select2-dropdown").bind("touchstart", (e) ->
    $target = $(e.target)
    if $target.hasClass("select2-search__field")
      $target.removeAttr("readonly").focus()
  )
)

$(".location-select").on("select2:close", () ->
  $(".select2-dropdown").unbind("touchstart")
  $(".select2-search__field").removeAttr("readonly")
)

答案 2 :(得分:0)

在手机上试试看是否有效:

var $select2 = $('select').select2();

$select2.on('select2-open', function(e) {
    $('.select2-drop-active .select2-input').blur();
});

答案 3 :(得分:0)

$(".select2-search input").prop("readonly", true);

对我来说很好。 确保在加载表格数据后使用它。

答案 4 :(得分:0)

分享此修复可能为时已晚.......但我相信它会对某人有所帮助...接受的答案将从select2中删除输入框。如果您只想删除手机中的键盘弹出窗口(输入焦点),只需将脚本复制并粘贴到页面底部即可。

<script>
 $(".select2, .select2-multiple").on('select2:open', function (e) {
     $('.select2-search input').prop('focus',false);
 })
</script>

答案 5 :(得分:0)

我之前回答了另一个与此相关的问题。

如果 iPad键盘有问题隐藏 引导模式,而点击select2输入 >,我建议你查看我的答案:Select2 doesn't work when embedded in a bootstrap modal

祝你好运:)

答案 6 :(得分:0)

Select2现在支持此行为(请参见此link for details

在该链接上,您将找到:

对于单选:

对于单选,Select2允许您使用minimumResultsForSearch配置选项隐藏搜索框。在此示例中,我们使用Infinity值告诉Select2永远不要显示搜索框。

$("#js-example-basic-hide-search").select2({
    minimumResultsForSearch: Infinity
});

对于多选功能:

对于多选框,没有明显的搜索控件。因此,要禁用对多选框的搜索,无论何时打开或关闭下拉列表,都需要将disabled属性设置为true:

$('#js-example-basic-hide-search-multi').select2();

$('#js-example-basic-hide-search-multi').on('select2:opening select2:closing', function( event ) {
    var $searchfield = $(this).parent().find('.select2-search__field');
    $searchfield.prop('disabled', true);
});

答案 7 :(得分:0)

这最有效:

minimumResultsForSearch: Infinity

这是设置select2框的便捷方法。

<script>
            $(document).ready(function() {

                $('.teamsList').val('').change();
                $('.teamsList').prepend('<option></option>').select2({placeholder: 'Select or create new...', allowClear: true, width: '100%', minimumResultsForSearch: Infinity});
                $('.teamsList').prepend('<option value="0">Create new</option>');

答案 8 :(得分:0)

此代码对我有用:

$(".select2-selection--single").click(function(){
  $(".select2-search__field").attr("type","number");
});

答案 9 :(得分:0)

我使用了if语句来确定输入是否为焦点,然后使用props将其焦点设置为false,这似乎很好用。

$('.yourSelect2-continer').on('select2:open', function () {

        if ( $('.select2-search input').is(':focus') ) {

            $('.select2-search input').prop('focus', false);

        } else {

            $('.select2-search input').prop('focus', true);

        }

    })

答案 10 :(得分:0)

您应该删除包含 .select2-search .select2-focusser 的div。可以解决此问题:

    $('select').select2(
      minimumResultsForSearch: -1
    )
    .on('select2-opening', function(e) {
      $(this).siblings('.select2-container').find('.select2-search, .select2-focusser').remove()
    });