在使用中我发现一个问题:就是在input 的 input 事件中无法使用 mui.getJSON BUG。具体表现是:每输入一个字符就会自动隐藏虚拟键盘。如下代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello MUI</title>
<meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no">
<link rel="stylesheet" href="http://ask.dcloud.net.cn/modules/mui/mui.css">
</head>
<body>
<header class="mui-bar mui-bar-nav">
<div class="mui-input-row mui-search">
<input type="search" class="mui-input-clear" placeholder="" id="search1" autofocus="autofocus" autocomplete="off">
</div>
</header>
<script src="modules/mui/mui.js"></script>
<script>
mui.init();
document.getElementById("search1").addEventListener("input", function (e) {
try {
mui.getJSON("http://192.168.0.91:8080/Search/AutoComplate", { 'kw': '0' }, function (response) {
});
} catch (e) {}
});
</script>
</body>
</html>
这个问题怎么解决?
5 个回复
翾 (作者) - 没有什么想要介绍的
而且我发现只要代码中调用mui.getJSON 就会把已经显示的键盘隐藏。不知道是不是mui的bug.
即使只有把代码改成这样也是出现该问题。(平台:Android,测试环境:真机+虚拟机)
DCloud_heavensoft
按键事件是onkeydown啊。
其他问题请 @DCloud_MUI_FXY 和 @DCloud_Android_磊子 确认下。
DCloud_UNI_FXY
临时解决方案:
在请求前,换掉XMLHttpRequest
mui.ajaxSettings.xhr=function(protocol) {
return new window.XMLHttpRequest();
};
翾 (作者) - 没有什么想要介绍的
@DCloud_heavensoft ,@DCloud_MUI_FXY ,谢谢你们的回答。
我要实现一个autocomplate的效果,所以用了 input 的事件。不过任何事件都不加,如在setTimeOut中加 远程请求也会自动隐藏键盘,只能是点一下搜索框输入一个字符,然后在点击搜索框输入一个字符,一直是这样。
我测试了一下,临时解决方案可以。不过我测试了一下换成
也就是mui.js中的这段:
就会复现这个问题。希望官方能修复这个BUG. 谢谢!
DCloud_UNI_FXY
plus.net.XMLHttpRequest在android上导致键盘收起的问题,已通知客户端同事,后续会想办法看看怎么处理。目前先使用标准XMLHttpRequest。