jQuery Mobile在弹出窗口中设置输入框焦点

4

在我的jquery mobile应用程序中,我希望在弹出窗口打开后自动将焦点设置在输入字段上。输入字段位于弹出窗口内,如下所示。焦点正确地设置在开头,但在弹出窗口完全加载后丢失。

    <!-- Link--><a onclick="$('#popup_input').focus()" href="#popup" data-iconpos="top" data-rel="popup" data-position-to="window" data-role="button" data-inline="false" data-transition="pop" data-icon="plus" data-theme="b">open</a>
<div data-role="popup" id="popup" data-overlay-theme="a" data-theme="c" data-dismissible="false" style="max-width:400px;" class="ui-corner-all">
            <div data-role="header" data-theme="a" class="ui-corner-top">
                 <h1>Popup</h1>

            </div>
            <div data-role="content" data-theme="d" class="ui-corner-bottom ui-content">
                 <h3 class="ui-title">Focused Field</h3>

                <p>
                    <input type="text" id="popup_input" />
                </p> <a href="#" data-role="button"data-rel="back">Close</a>

            </div>
        </div> 

http://jsfiddle.net/kx7Gz/

感谢您的帮助。

顺祝商祺。

1个回答

8

工作示例:http://jsfiddle.net/Gajotres/BknCc/

您需要使用一些JavaScript来使其工作。不要使用内联JavaScript来设置字段的焦点。相反,在执行任何操作之前,请等待弹出窗口完全创建并显示。

HTML:

<!DOCTYPE html>
<html>
    <head>
        <title>jQM Complex Demo</title>
        <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; minimum-scale=1.0; user-scalable=no; target-densityDpi=device-dpi"/>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.css" />
        <script src="http://code.jquery.com/mobile/1.3.1/jquery.mobile-1.3.1.min.js"></script>    
    </head>
    <body>
        <div data-role="page" id="index">
            <div data-theme="b" data-role="header">
                <h1>Index page</h1>
            </div>

            <div data-role="content"> 
                <a href="#popup" data-iconpos="top" data-rel="popup" data-position-to="window" data-role="button" data-inline="false" data-transition="pop" data-icon="plus" data-theme="b">open</a>

                <div data-role="popup" id="popup" data-overlay-theme="a" data-theme="c" data-dismissible="false" style="max-width:400px;" class="ui-corner-all">
                    <div data-role="header" data-theme="a" class="ui-corner-top">
                        <h1>Popup</h1>

                    </div>
                    <div data-role="content" data-theme="d" class="ui-corner-bottom ui-content">
                        <h3 class="ui-title">Focused Field</h3>

                        <p>
                            <input type="text" id="popup_input" />
                        </p> <a href="#" data-role="button"data-rel="back">Close</a>

                    </div>
                </div>
            </div>
        </div>    
    </body>
</html>   

Javascript :

$(document).on('pagebeforeshow', '#index', function(){ 
    $( "#popup" ).popup({
        afteropen: function( event, ui ) {
            $('#popup_input').focus();
        }
    });
});    

@Gajotres,如何在jquerymobile中将焦点集中在'ul' filter输入字段上? - bCliks
1
@Gajotres 我有一个稍微不同的问题。我正在弹出窗口中打开一个表单。当我点击输入数据的输入字段时,该字段会被虚拟键盘隐藏。由于受阻,我无法提出单独的问题。 - mokNathal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接