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

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。

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

  • 标题 / 粗斜体
  • 代码片段
  • 超链接 / 图片 / 视频
  • 列表 / 引用

文章内容较多时,可以用标题分段 :

## 大标题 
### 小标题

斜体 / 粗体 :

**粗体** 
*斜体*
***粗斜体***

代码片段 :

``` javascript
代码片段
```

超链接 :

[链接文字](链接地址) 例: [百度](http://www.baidu.com)

图片 :

![图片说明](图片地址) 例: ![百度logo](http://www.baidu.com/img/bdlogo.gif)

视频 :

!![视频说明](视频地址) 例: !![优酷视频](http://youku.com)

有序列表 :

1. 123
2. 123
3. 123

无序列表 :

- 123
- 123
- 123

引用 : ( 双回车后结束引用 )

> 引用内容
引用内容
引用内容