翾
  • 发布:2015-03-16 19:16
  • 更新:2015-03-17 13:53
  • 阅读:2287

mui 中input标签的input事件中无法使用 mui.getJSON代码?

分类:MUI

在使用中我发现一个问题:就是在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>

这个问题怎么解决?

2015-03-16 19:16 负责人:无 分享
已邀请:
翾

(作者) - 没有什么想要介绍的

而且我发现只要代码中调用mui.getJSON 就会把已经显示的键盘隐藏。不知道是不是mui的bug.

<script>  
        mui.init();  
        setInterval(function () {  
            try {  
                mui.getJSON("http://192.168.0.91:8080/Search/AutoComplate", { 'kw': '0' }, function (response) {  
                });  
            } catch (e) { }  
        },8000);  
    </script>

即使只有把代码改成这样也是出现该问题。(平台:Android,测试环境:真机+虚拟机)

DCloud_heavensoft

DCloud_heavensoft

按键事件是onkeydown啊。
其他问题请 @DCloud_MUI_FXY 和 @DCloud_Android_磊子 确认下。

DCloud_UNI_FXY

DCloud_UNI_FXY

临时解决方案:
在请求前,换掉XMLHttpRequest
mui.ajaxSettings.xhr=function(protocol) {
return new window.XMLHttpRequest();
};

翾

(作者) - 没有什么想要介绍的

@DCloud_heavensoft ,@DCloud_MUI_FXY ,谢谢你们的回答。
我要实现一个autocomplate的效果,所以用了 input 的事件。不过任何事件都不加,如在setTimeOut中加 远程请求也会自动隐藏键盘,只能是点一下搜索框输入一个字符,然后在点击搜索框输入一个字符,一直是这样。
我测试了一下,临时解决方案可以。不过我测试了一下换成

return new  plus.net.XMLHttpRequest()

也就是mui.js中的这段:

/**  
 * 5+ ajax  
 */  
(function($) {  
    $.plusReady(function() {  
        $.ajaxSettings = $.extend($.ajaxSettings, {  
            xhr: function(protocol) {  
                if (protocol === 'file:') { //本地文件使用标准XMLHttpRequest  
                    return new window.XMLHttpRequest();  
                }  
                return new plus.net.XMLHttpRequest();  
            }  
        });  
    });  
})(mui);

就会复现这个问题。希望官方能修复这个BUG. 谢谢!

DCloud_UNI_FXY

DCloud_UNI_FXY

plus.net.XMLHttpRequest在android上导致键盘收起的问题,已通知客户端同事,后续会想办法看看怎么处理。目前先使用标准XMLHttpRequest。

该问题目前已经被锁定, 无法添加新回复