当我们点击选择2下拉菜单时,将焦点设置为搜索文本字段

时间:2014-09-17 05:35:47

标签: jquery html twitter-bootstrap jquery-select2

我正在使用带有引导程序的select2.js版本:3.4.3 我有一个下拉。

enter image description here

当我点击下拉列表时,我得到了包含搜索文本字段的列表。 但我的光标并不专注于搜索文本字段。 enter image description here

<form:select path="yearAge" id="yearAgeId"
    cssClass="form-control search-select static-select">
    <form:option value="">Years</form:option>
    <c:forEach var="i" begin="1" end="125"  >
    <form:option value="${i}" label="${i}"></form:option>
    </c:forEach>     
</form:select>


$(".search-select.static-select").select2({
    placeholder: $(this).attr('placeholder'),
    allowClear: true
});

当我点击下拉光标时,焦点应设置为自动搜索文本字段。

谢谢...... !!!!!

5 个答案:

答案 0 :(得分:8)

如果 jQuery 3.6.0 导致了这个,你可以使用这个:

 $(document).on('select2:open', () => {
    document.querySelector('.select2-search__field').focus();
  });

答案 1 :(得分:2)

这个问题可以通过使用setTimeout()函数延迟focus()执行时间来解决,我们可以通过在#3321行修改 select2.js 中的函数来实现这个目的。 >

container.on('open', function () {
  self.$search.attr('tabindex', 0);
  //self.$search.focus(); remove this line
  setTimeout(function () { self.$search.focus(); }, 10);//add this line

});

答案 2 :(得分:2)

试试这个

$(document).on('select2:open', (e) => {
    const selectId = e.target.id

    $(".select2-search__field[aria-controls='select2-" + selectId + "-results']").each(function (
        key,
        value,
    ) {
        value.focus()
    })
})

答案 3 :(得分:0)

在调用select2函数强制焦点到特定搜索字段后,只需添加一个自定义的jQuery行。只需将'#target'替换为搜索输入字段的ID。

$( "#target" ).focus();

答案 4 :(得分:0)

对于 NPM 或 Laravel:当我在 Laravel 应用程序中使用 NPM 包管理器时,我必须在 package.json 中将 jQuery 从 3.6 恢复到 4.5.1,然后运行 ​​npm install 和 npm run prod。然后问题解决了。

"jquery": "^3.6.0" -> "jquery": "3.5.1",