Jquery mobile 在jquery mobile中的Safari after changePage中显示iOS键盘
我知道,如果不在iOS safari上单击一下,用常规焦点()显示键盘几乎是不可能的,但我正在尝试做一些不同的事情。我使用jquery mobile在DOM中加载两个不同的页面(data role=“page”)。这两个页面上都有文本输入。当用户轻触第一页上的输入时,我希望向上滑动第二页,并将注意力集中在第二页上的输入上,并显示键盘。我可以通过在第一个输入上创建一个焦点事件侦听器,并在$('#secondpage').show()后面加上一个$('#secondinput').focus()来实现这一点。但是,如果我使用changePage()而不是show(),或者甚至在.show()上放置动画,则该字段将不会聚焦,键盘也不会显示 以下是我在第一页的输入:Jquery mobile 在jquery mobile中的Safari after changePage中显示iOS键盘,jquery-mobile,mobile-safari,Jquery Mobile,Mobile Safari,我知道,如果不在iOS safari上单击一下,用常规焦点()显示键盘几乎是不可能的,但我正在尝试做一些不同的事情。我使用jquery mobile在DOM中加载两个不同的页面(data role=“page”)。这两个页面上都有文本输入。当用户轻触第一页上的输入时,我希望向上滑动第二页,并将注意力集中在第二页上的输入上,并显示键盘。我可以通过在第一个输入上创建一个焦点事件侦听器,并在$('#secondpage').show()后面加上一个$('#secondinput').focus()来实
<input type="text" name="input1" id="input1" data-theme="A">
以下代码不起作用:
$('#input1').on('tap', function() {
$('#page2').show("slide", { direction: "up" });
$('#input2').focus();
});
这也不起作用(这是最好的解决方案):
我尝试过的另一件事是在#input1上添加onclick属性,但无论我做什么,任何转换似乎都会破坏焦点和键盘。有什么建议吗?试试下面的代码,您应该只在页面2加载完毕后才关注输入2
$(document).bind('pageinit', function() {
$('#input1').on('tap', function() {
$.mobile.changePage('#page2', { transition: 'slideup' });
});
$("#page2").bind('pageshow', function() {
$('#input2').focus();
});
});
这在电话上对我不起作用。它在普通浏览器中运行良好,但在iOS safari上会出现新页面,但没有关注它,键盘也没有显示出来。话虽如此,这正是我试图实现的行为,但我显然希望在最后显示键盘。我认为这是iOS的一项功能,除非用户与键盘交互,否则它不会显示键盘。
$('#input1').on('tap', function() {
$('#page2').show("slide", { direction: "up" });
$('#input2').focus();
});
$('#input1').on('tap', function() {
$.mobile.changePage('#page2', { transition: 'slideup' });
$('#input2').focus();
});
$(document).bind('pageinit', function() {
$('#input1').on('tap', function() {
$.mobile.changePage('#page2', { transition: 'slideup' });
});
$("#page2").bind('pageshow', function() {
$('#input2').focus();
});
});