西西里
西西里
  • 发布:2015-12-19 18:47
  • 更新:2016-11-15 16:38
  • 阅读:3045

Bug反馈, picker有输入法时会闪动

分类:MUI

picker控件会在有输入法的界面里出现闪动现象, 我呼出搜狗输入法后在关闭输入法,picker控件就会出现闪动现象

2015-12-19 18:47 负责人:无 分享
已邀请:
西西里

西西里 (作者)

<!DOCTYPE html>
<html>

<head>  
    <meta charset="utf-8">  
    <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
    <title></title>  
    <!--标准mui.css-->  
    <link rel="stylesheet" href="../css/mui.min.css">  
    <!--App自定义的css-->  
    <link rel="stylesheet" type="text/css" href="../css/app.css" />  
    <link href="../css/mui.picker.css" rel="stylesheet" />  
    <link href="../css/mui.poppicker.css" rel="stylesheet" />  
    <!--<link rel="stylesheet" type="text/css" href="../css/mui.picker.min.css" />-->  
    <style>  
        .mui-btn {  
            font-size: 16px;  
            padding: 8px;  
            margin: 3px;  
        }  
        h5.mui-content-padded {  
            margin-left: 3px;  
            margin-top: 20px !important;  
        }  
        h5.mui-content-padded:first-child {  
            margin-top: 12px !important;  
        }  
        .ui-alert {  
            text-align: center;  
            padding: 20px 10px;  
            font-size: 16px;  
        }  
    </style>  
</head>  

<body>  
    <header class="mui-bar mui-bar-nav">  
        <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  
        <h1 class="mui-title">picker(选择器)</h1>  
    </header>  
    <div class="mui-content">  
        <div class="mui-content-padded">  
            <h5 class="mui-content-padded">原生 SELECT</h5>  
            <!--<select class="mui-btn mui-btn-block">  
                <option value="item-1">item-1</option>  
                <option value="item-2">item-2</option>  
                <option value="item-3">item-3</option>  
                <option value="item-4">item-4</option>  
                <option value="item-5">item-5</option>  
            </select>-->  
            <!--下面添加一个text测试-->  
            <input type="text"/>  
            <br />  
            <p>原生 SELECT(选择框)在不同的设备上UI可能会有差异,并且不支持多级联动(多个 SELECT 可实现,但较麻烦),故mui封装了picker组件,参见如下示例。</p>  
            <h5 class="mui-content-padded">普通示例</h5>  
            <button id='showUserPicker' class="mui-btn mui-btn-block" type='button'>一级选择示例 ...</button>  
            <div id='userResult' class="ui-alert"></div>  
            <h5 class="mui-content-padded">级联示例</h5>  
            <button id='showCityPicker' class="mui-btn mui-btn-block" type='button'>二级联动示例 ...</button>  
            <div id='cityResult' class="ui-alert"></div>  
            <button id='showCityPicker3' class="mui-btn mui-btn-block" type='button'>三级联动示例 ...</button>  
            <div id='cityResult3' class="ui-alert"></div>  
        </div>  
    </div>  
    <script src="../js/mui.min.js"></script>  
    <!--<script src="../js/mui.picker.min.js"></script>-->  
    <script src="../js/mui.picker.js"></script>  
    <script src="../js/mui.poppicker.js"></script>  
    <script src="../js/city.data.js" type="text/javascript" charset="utf-8"></script>  
    <script src="../js/city.data-3.js" type="text/javascript" charset="utf-8"></script>  
    <script>  
        (function($, doc) {  
            $.init();  
            $.ready(function() {  
                //普通示例  
                var userPicker = new $.PopPicker();  
                userPicker.setData([{  
                    value: 'ywj',  
                    text: '董事长 叶文洁'  
                }, {  
                    value: 'aaa',  
                    text: '总经理 艾AA'  
                }, {  
                    value: 'lj',  
                    text: '罗辑'  
                }, {  
                    value: 'ymt',  
                    text: '云天明'  
                }, {  
                    value: 'shq',  
                    text: '史强'  
                }, {  
                    value: 'zhbh',  
                    text: '章北海'  
                }, {  
                    value: 'zhy',  
                    text: '庄颜'  
                }, {  
                    value: 'gyf',  
                    text: '关一帆'  
                }, {  
                    value: 'zhz',  
                    text: '智子'  
                }, {  
                    value: 'gezh',   
                    text: '歌者'  
                }]);  
                var showUserPickerButton = doc.getElementById('showUserPicker');  
                var userResult = doc.getElementById('userResult');  
                showUserPickerButton.addEventListener('tap', function(event) {  
                    userPicker.show(function(items) {  
                        userResult.innerText = JSON.stringify(items[0]);  
                        //返回 false 可以阻止选择框的关闭  
                        //return false;  
                    });  
                }, false);  
                //-----------------------------------------  
                //级联示例  
                var cityPicker = new $.PopPicker({  
                    layer: 2  
                });  
                cityPicker.setData(cityData);  
                var showCityPickerButton = doc.getElementById('showCityPicker');  
                var cityResult = doc.getElementById('cityResult');  
                showCityPickerButton.addEventListener('tap', function(event) {  
                    cityPicker.show(function(items) {  
                        cityResult.innerText = "你选择的城市是:" + items[0].text + " " + items[1].text;  
                        //返回 false 可以阻止选择框的关闭  
                        //return false;  
                    });  
                }, false);  
                //-----------------------------------------  
                //                  //级联示例  
                var cityPicker3 = new $.PopPicker({  
                    layer: 3  
                });  
                cityPicker3.setData(cityData3);  
                var showCityPickerButton = doc.getElementById('showCityPicker3');  
                var cityResult3 = doc.getElementById('cityResult3');  
                showCityPickerButton.addEventListener('tap', function(event) {  
                    cityPicker3.show(function(items) {  
                        cityResult3.innerText = "你选择的城市是:" + (items[0] || {}).text + " " + (items[1] || {}).text + " " + (items[2] || {}).text;  
                        //返回 false 可以阻止选择框的关闭  
                        //return false;  
                    });  
                }, false);  
            });  
        })(mui, document);  
    </script>  
</body>  

</html>

西西里

西西里 (作者)

我在这里添加了已个text 控件,点击开关输入法时就会有问题。

水域心诚

水域心诚

那是mui的一个bug。
现象是:picker是浮动定位的,当input获取焦点后,输入框就会把picker顶起来(至于为什么没看到picker,是因为picker没有软键盘高,并且在软键盘下面),当软键盘慢慢往下隐藏时,picker就会浮现出来,并且跟着软键盘往下隐藏。
解决方案:当input获取焦点后,使 picker 的display:none,当input失去焦点后在 display:block。

  • 笑得很开心

    刚遇到这个问题,页面内有多个picker的选择,求具体步骤~

    2016-11-16 11:56

  • 水域心诚

    $("input,textarea").focus(function(){

    $(".mui-poppicker").hide();

    });

    $("input,textarea").blur(function(){

    $(".mui-poppicker").show();

    });


    拿去试试吧

    2016-11-30 22:03

西西里

西西里 (作者)

下面这个能看到,这是hellomui的例子,

kunge

kunge

我也有 你的解决没有

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