我知道在没有onclick on iOS safari的情况下显示具有常规焦点的键盘()几乎是不可能的,但我正在尝试做一些不同的事情。使用jquery mobile我在DOM中加载了两个不同的页面(data-role =" page")。这两个页面都有文本输入。当用户点击第一页上的输入时,我想向上滑动第二页并关注第二页上的输入并显示键盘。我可以通过在第一个输入上创建焦点事件监听器并使用常规$(' #secondpage')。show()后跟$('#secondinput')来实现此目的。焦点()。但是,如果我使用changePage()而不是show(),或者甚至在.show()上放置动画,那么该字段就不会被关注,键盘也不会显示。
以下是我在第一页的输入:
<input type="text" name="input1" id="input1" data-theme="A">
整个第二页:
<div data-role="page" id="page2">
<div>
<form>
<input type="text" id="input2" name="input2">
</form>
</div>
</div>
这是我的javascript有效,但没有提供我想要的转换,这包含在第一页的pageinit中。另外,为了使其工作,我必须在#page2上放置一个display:none:
$('#input1').on('tap', function() {
$('#page2').show();
$('#input2').focus();
});
以下代码不起作用:
$('#input1').on('tap', function() {
$('#page2').show("slide", { direction: "up" });
$('#input2').focus();
});
这也不起作用(这将是最优选的解决方案):
$('#input1').on('tap', function() {
$.mobile.changePage('#page2', { transition: 'slideup' });
$('#input2').focus();
});
我尝试过的另一件事是在#input1上添加一个onclick属性,但无论我做什么,任何转换似乎都会消除焦点和键盘。有什么建议吗?
答案 0 :(得分:0)
尝试以下代码,只有在page2加载完毕后才应关注input2。
$(document).bind('pageinit', function() {
$('#input1').on('tap', function() {
$.mobile.changePage('#page2', { transition: 'slideup' });
});
$("#page2").bind('pageshow', function() {
$('#input2').focus();
});
});
<强> DEMO 强>