通常の focus() でキーボードを表示することは、iOS サファリの onclick なしではほとんど不可能であることはわかっていますが、少し違うことをしようとしています。jquery モバイルを使用して、DOM に 2 つの異なるページ (data-role="page") をロードします。これらのページには両方ともテキスト入力があります。ユーザーが最初のページの入力をタップすると、2 番目のページを上にスライドして、2 番目のページの入力にフォーカスし、キーボードを表示します。これを実現するには、最初の入力にフォーカス イベント リスナーを作成し、通常の $('#secondpage').show() の後に $('#secondinput').focus() を指定します。ただし、show() の代わりに changePage() を使用したり、.show() にアニメーションを配置したりすると、フィールドはフォーカスされず、キーボードは表示されません。
最初のページからの私の入力は次のとおりです。
<input type="text" name="input1" id="input1" data-theme="A">
2 ページ目全体:
<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();
});
私が試したもう 1 つのことは、#input1 に onclick 属性を設定することですが、何をしても遷移がフォーカスとキーボードを殺してしまうようです。助言がありますか?