wyinhe
wyinhe
  • 发布:2015-08-07 09:23
  • 更新:2015-08-11 12:54
  • 阅读:3351

打开页面默认弹出键盘

分类:Native.js

现在有打开页面默认弹出键盘 ,同时焦点定位到输入框的需求,参考http://ask.dcloud.net.cn/question/2324里的做了,但是有问题,详细描述如下:
从A窗口中弹出B窗口,我在B窗口中直接使用http://ask.dcloud.net.cn/question/2324的方式,的确可以用,,但是,实际使用时,我的B窗口是预加载的,不能像示例中那样直接close,其实是hide,然后问题就来了,我在B窗口的show事件中处理弹出键盘逻辑,并用document.getElementById("input").focus()获取焦点,每次键盘都能成功弹出来,但输入框上就是没有光标定位过来,因此在键盘上输内容也就无效了,不知这种情况该如何处理???我调试过执行document.getElementById("input").focus()后document.activeElement确实已经是input对象了,可就是获取不到光标。。。代码如下:

<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="utf-8">  
        <title>Native.js</title>  
        <script src="js/mui.js"></script>  
        <link href="css/mui.css" rel="stylesheet" />  
        <script type="text/javascript">  
             // H5 plus事件处理  
            function plusReady() {  
                plus.webview.currentWebview().addEventListener("show", function() {  
                    var Context = plus.android.importClass("android.content.Context");  
                    var InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");  
                    var main = plus.android.runtimeMainActivity();  
                    var imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);  
                    imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);  
                    console.log(document.activeElement.id);  
                    document.getElementById("input").focus();  
                    console.log(document.activeElement.id);  
                });  
            }  
            document.addEventListener("plusready", plusReady, false);  
        </script>  
    </head>  

    <body>  
        <button class="mui-btn mui-btn-positive mui-btn-block" onclick="plus.webview.currentWebview().hide()">Hide</button>  
        <br/>  
        <input id="input" type="text" />  
        <br/> 打开页面后编辑框自动获取焦点并显示软键盘  
    </body>  

</html>  
2015-08-07 09:23 分享
已邀请:

最佳回复

Android_磊子

Android_磊子

在执行show的时候需要让当前webview获取焦点。因此需要加句代码,如下:
var webview = plus.android.currentWebview();
plus.android.importClass(webview);
webview.requestFocus();

wyinhe

wyinhe (作者)

@DCloud_Android_磊子 按照你说的在安卓下没有问题了,但是ios平台下该如何让webview获取焦点呢?

wyinhe

wyinhe (作者)

@DCloud_App_Array , @DCloud , @DCloud_heavensoft , @DCloud_MUI_CHB , @DCloud_IOS_XTY ,没人知道吗,跪求IOS上的处理方式。

  • DCloud_IOS_XTY

    iOS不能自动聚焦吗?

    2015-08-11 15:06

  • wyinhe (作者)

    噢,刚才好好检查了下,是我代码写错了,IOS下也没问题了,谢谢!

    2015-08-11 16:00

要回复问题请先登录注册