在jquery mobile中的changePage之后在Safari中显示iOS键盘

时间:2013-04-10 18:30:28

标签: jquery-mobile mobile-safari

我知道在没有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属性,但无论我做什么,任何转换似乎都会消除焦点和键盘。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

尝试以下代码,只有在page2加载完毕后才应关注input2。

$(document).bind('pageinit', function() {
    $('#input1').on('tap', function() {
        $.mobile.changePage('#page2', { transition: 'slideup' });

    }); 
    $("#page2").bind('pageshow', function() {
        $('#input2').focus();
    });
});

<强> DEMO