javascript - 输入焦点时键盘消失 - 移动
问题描述
我有这段代码,一切正常,但是当我在移动设备上打开搜索栏并单击输入字段时,我的键盘打开和关闭,我发现 window.resize 是问题所在,但我没有找到任何解决方法, 我应该怎么办?
function appendSearchBar() {
if($(window).width() <= 769){
$('.search-bar').appendTo('.mobile-toolbar .global-search');
} else {
$('.search-bar').appendTo('.header-toolbar-nav .global-search');
}
}
$(window).resize(function() {
appendSearchBar();
});
解决方案
当您appendTo
将元素分离并重新附加到 DOM 并因此失去焦点时。
仅当它不在您想要的位置时才应附加。
let inMobile;
function appendSearchBar(firstTime) {
const windowWidth = $(window).width();
if (windowWidth <= 769 && (!inMobile || firstTime)) {
inMobile = true;
$('.search-bar').appendTo('.mobile-toolbar .global-search');
}
if (windowWidth > 769 && (inMobile || firstTime)) {
inMobile = false;
$('.search-bar').appendTo('.header-toolbar-nav .global-search');
}
$(window).resize(function() {
appendSearchBar();
});
appendSearchBar(true);
推荐阅读
- java - JSoup - 选择不在链接内的图像
- php - 在mysql查询中获取下一行
- javascript - 如何使用 Angular 7 在 formControl 中设置文件?
- reactjs - 如何在其中获取 API 提供的记录值
? - android - 尝试将 downloadUri 添加到 Firestore 文档时出错。“无法序列化对象。超过最大深度 500”
- python - 如何解决导入 tkinter 模块的问题
- excel - Excel VBA - 从多个文本文件中提取包含特定名称的行
- web-scraping - 用户警告:未安装soupsieve 软件包。不能使用 CSS 选择器
- ecmascript-6 - 为什么 var 和 let 都抛出重新声明错误?
- javascript - 无法在动态创建的输入 ID 上 getDocumentById