6***@qq.com
6***@qq.com
  • 发布:2018-02-06 14:22
  • 更新:2020-03-23 09:45
  • 阅读:3148

MUI开发的APP中输入框或文本域不能自动获取焦点

分类:MUI

使用MUI html5+开发app,有个需求就是app打开后界面的某个输入框呀自动获取焦点,使用document.getElementById('trackinNum').focus();方式实现,在 chrome浏览器中能正常获取焦点,但是在app里就是不行,无法自动获取焦点

2018-02-06 14:22 负责人:无 分享
已邀请:
Neil_HL

Neil_HL

可通过nativeJS实现,下面是HelloMui示例里面的部分代码,效果可查看HelloMui的input界面,是可以自动获得焦点的。

var nativeWebview, imm, InputMethodManager;  
var initNativeObjects = function() {  
    if (mui.os.android) {  
        var main = plus.android.runtimeMainActivity();  
        var Context = plus.android.importClass("android.content.Context");  
        InputMethodManager = plus.android.importClass("android.view.inputmethod.InputMethodManager");  
        imm = main.getSystemService(Context.INPUT_METHOD_SERVICE);  
    } else {  
        nativeWebview = plus.webview.currentWebview().nativeInstanceObject();  
    }  
};  
var showSoftInput = function() {  
    if (mui.os.android) {  
        imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);  
    } else {  
        nativeWebview.plusCallMethod({  
            "setKeyboardDisplayRequiresUserAction": false  
        });  
    }  
    setTimeout(function() {  
        var inputElem = document.querySelector('input');//需要获得焦点的input  
        inputElem.focus();  
        inputElem.parentNode.classList.add('mui-active'); //第一个是search,加上激活样式  
    }, 200);  
};  
mui.plusReady(function() {  
    initNativeObjects();  
    showSoftInput();  
});
  • 6***@qq.com (作者)

    谢谢,这样确实可以获取焦点,还想问个问题,获取焦点后,系统会自动弹出软件盘,需求是不需要软键盘,是通过扫描枪扫的,怎样禁止软键盘打开呢

    2018-02-07 10:57

  • Neil_HL

    回复 6***@qq.com:那你就不要用input了,input聚焦必然弹起软键盘,你自己画个div,在里面再画个光标,这样就像一个input了,需要键盘输入的时候再把div换成input

    2018-02-07 11:04

  • 6***@qq.com (作者)

    回复 Neil_HL: 用DIV模拟的话,无法监听到扫描枪扫描的内容啊

    2018-02-07 13:34

  • 6***@qq.com (作者)

    @DCvcVloud_MUI_Neil:请问还有什么好的解决办法没有

    2018-02-07 15:21

  • Neil_HL

    回复 6***@qq.com:你的app在这一个页面的业务流程是怎样的?

    2018-02-07 15:25

  • 6***@qq.com (作者)

    回复 Neil_HL:是这样的,这个app主要是用在在android系统的扫描设备里,负责将所有扫描的条形码(货物跟踪号)发送的后台保存到数据库。客户要求打开app后就可以直接扫描了,又不要弹出键盘

    2018-02-07 15:35

  • Neil_HL

    回复 6***@qq.com:扫码结果拿到了就直接发送给后台,需要input做什么事?是要在input里面显示,再认为的点击发送给后台?

    2018-02-07 15:43

  • 6***@qq.com (作者)

    回复 Neil_HL: 可以不用input,,textarea这些,问题是不用的话获取不到扫描的数据,扫描事件也无法捕获

    2018-02-07 17:43

  • Neil_HL

    回复 6***@qq.com:扫描是通过你们特定的仪器还是5+的barcode?

    2018-02-07 18:15

  • 6***@qq.com (作者)

    回复 Neil_HL:市场上购买的外设,说白了就是集手机和超市扫描枪功能于一身的设备,没有使用h5+的barcode

    2018-02-08 08:52

1***@qq.com

1***@qq.com

你好,请问现在你这个问题解决了么?我这边刚好也遇到了这个问题

w***@gmail.com

w***@gmail.com

鄙人最近也遇到这个问题,大家有进展吗?谢谢

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