Utaoy
Utaoy
  • 发布:2015-04-16 14:31
  • 更新:2015-07-16 18:41
  • 阅读:5311

tap触发事件,引起focus光标定位又消失。使用click则不会有问题

分类:HTML5+

document.getElementById('testBtn').addEventListener('tap',function(event){
document.getElementById('name').focus();
return false;
});

id为name的这个输入框会先获得光标,然后弹出键盘,紧接着关闭键盘,光标消失。 这个是IOS8真机上面的现象。
在安卓机子上,foucs不会有任何效果,也就是不会有光标定位和键盘出现

如果把tap事件换成click,则一切正常! 只能妥协用click嘛?

2015-04-16 14:31 负责人:无 分享
已邀请:
DCloud_UNI_FXY

DCloud_UNI_FXY

此问题是因为,tap事件触发之后,又会触发focus,导致焦点转移到了当前button上。

修复方案:
document.getElementById('testBtn').addEventListener('tap', function(event) {
event.detail.gesture.preventDefault();//阻止默认事件
document.getElementById('name').focus();
});

  • Utaoy (作者)

    3Q。感谢!

    2015-04-16 15:59

  • 4***@qq.com

    NB

    2016-12-10 10:08

  • 4***@qq.com

    牛人,帮我解决了问题

    2017-08-17 18:46

  • 陈可乐

    牛,找了半天,尝试了很多,您这个几行代码就搞定了,感谢您

    2018-01-29 18:16

DCloud_UNI_FXY

DCloud_UNI_FXY

试试这个,或者自己setTimeout里focus

mui.focus(document.getElementById('name'));
  • 1***@qq.com

    安卓测试,focus不能弹出键盘的,怎么破

    2017-04-12 00:00

Utaoy

Utaoy (作者)

看到这个,我没有第一时间去试,现在mui文档的javascript部分,好像没有api文档噢,啥时候会有补充啊

Utaoy

Utaoy (作者)

尝试了,没有效果诶。
IOS8

DCloud_UNI_FXY

DCloud_UNI_FXY

能否发出来一个测试页面,我测试一下

Utaoy

Utaoy (作者)

<div class="mui-content" style="margin-top: 100px;">  
            <ul class="mui-table-view">  
                        <li class="mui-table-view-cell">  
                            姓名 <input id="name" type="text" class="iux-input" placeholder="输入姓名" style="width:100px">  
                        </li>  
                        <li class=mui-table-view-cell>  
                            <button type="button" id="testBtn" class="btn btn-default iux-btn">tap事件</button>  
                            <button type="button" id="testBtn2" class="btn btn-default iux-btn">click事件</button>  
                        </li>  
                    </ul>  
        </div>  
        <script>  
            document.getElementById('testBtn').addEventListener('tap',function(event){  
                console.log('tap event');  
                document.getElementById('name').focus();  
                //mui.focus(document.getElementById('name'));  

            return false;  
        });  

    document.getElementById('testBtn2').addEventListener('click',function(event){  
                console.log('click event');  
                document.getElementById('name').focus();  
                //mui.focus(document.getElementById('name'));  

            return false;  
        });  

        </script>
Utaoy

Utaoy (作者)

html 文件不允许上传。
最后的那行被实体化的重新写成</script> 就OK

Utaoy

Utaoy (作者)

3Q。原来是自己理解不深刻。谢谢解决

dcl

dcl

"tap事件触发之后,又会触发click,导致焦点转移到了当前button上。"

这个我没理解,为什么触发click焦点会移到当前btn啊?求指教

  • DCloud_UNI_FXY

    之前说错了。不是因为触发click导致的焦点转移。

    在tap事件里边preventDefault后,会阻止当前element获得焦点。

    2015-07-16 18:41

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