现在有打开页面默认弹出键盘 ,同时焦点定位到输入框的需求,参考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>
3 个回复
最佳回复
Android_磊子
在执行show的时候需要让当前webview获取焦点。因此需要加句代码,如下:
var webview = plus.android.currentWebview();
plus.android.importClass(webview);
webview.requestFocus();
叶孤村 (作者)
@DCloud_Android_磊子 按照你说的在安卓下没有问题了,但是ios平台下该如何让webview获取焦点呢?
叶孤村 (作者)
@DCloud_App_Array , @DCloud , @DCloud_heavensoft , @DCloud_MUI_CHB , @DCloud_IOS_XTY ,没人知道吗,跪求IOS上的处理方式。
DCloud_IOS_XTY
iOS不能自动聚焦吗?
2015-08-11 15:06
叶孤村 (作者)
噢,刚才好好检查了下,是我代码写错了,IOS下也没问题了,谢谢!
2015-08-11 16:00