869345109@qq.com
869345109@qq.com
  • 发布:2017-09-08 14:17
  • 更新:6 天前
  • 阅读:2946

如何强制禁用软键盘

分类:MUI

我在用mui界面布局中;有时候场景需要输入框不需要弹出软键盘输入法;如何强制关闭呢?请各位同仁们讨教;谢谢啦

2017-09-08 14:17 分享
已邀请:
1241533375@qq.com

1241533375@qq.com - 90后

disabled="disabled"

869345109@qq.com

869345109@qq.com (作者)

你好;这样的话;我文本框就没办法获取光标;我的目的禁用系统自带的软键盘;但是input 文本框还是可以通过其他方式输入值的

回梦無痕

回梦無痕 - qq565766672,论坛私信不回,有需要请加QQ,付费咨询指导。

之前见到过一个做计算器的也差不多是这个需求,
是通过div仿造input,然后监听这个仿造的input的tap事件,控制弹出自制的键盘,
然后在自制键盘的js控制输入数字和仿造input的显示数字

869345109@qq.com

869345109@qq.com (作者)

<div contenteditable="true" id="t"> 你意思这种方式吗;或者你有更好的方案;给个代码参考一下啊

回梦無痕

回梦無痕 - qq565766672,论坛私信不回,有需要请加QQ,付费咨询指导。

contenteditable的话,还是会弹出键盘的,要用div伪装一个input,然后监听这个div触摸事件,然后弹出自己的键盘,你既然不想弹出系统键盘,肯定有自己做的键盘吧?然后放一个宽度2px的div到伪装input上,给他一个闪烁动画,然后根据自己的键盘输入,插入到伪装input中,这就完成了。
这是一个思路,我没有现成的代码,你自己写吧。

869345109@qq.com

869345109@qq.com (作者)

目前我这个需求都不需要软键盘;因为我是通过扫描枪扫描;扫描条形码方式;把值传递到文本框中的

  • 回梦無痕

    那就直接放一个div,js把数值插入到这个div就行了

    2017-09-08 16:55

  • 869345109@qq.com (作者)

    你说的我有个疑问;就是放一个div;然后怎么获取外部扫描枪扫的条形码的“值”;一般要光标在文本框中有焦点了;才能把值放到那个地方去;所以怎么用js填充到div 中呢;我有点没明白;谢谢

    2017-09-08 17:02

  • 回梦無痕

    回复 869345109@qq.com:楼下有代码。

    2017-09-08 17:49

1241533375@qq.com

1241533375@qq.com - 90后

你的意思是通过js填值是吧,很简单啊

<input disabled="disabled" id="test" />
<script>
document.getElementById("test").value = "你要填入的值";
</script>

869345109@qq.com

869345109@qq.com (作者)

我这个是一个pda自带扫描枪;光标焦点在什么地方;值就会填充在什么地方;所以js应该是无法这么写的

  • 回梦無痕

    这个需求肯定能实现的,要看具体代码。因为总要有代码填充数值的

    2017-09-08 18:04

  • 上海Allen

    你这个和我的需求差不多,我的是领料单扫描输入

    2017-09-27 15:26

  • 313671494@qq.com

    这个问题我也想解决,这样方便一些蓝牙的扫描头接入APP,如果Plus API能控制软键盘弹出和禁用就好了,现在只能够PDA扫描事件去控制了,一般PDA都会发扫描到条码就会发送一个广播的,APP就可以监听广播的方式获取扫描头返回值。

    2017-10-09 10:45

1241533375@qq.com

1241533375@qq.com - 90后

我刚刚测试了,软键盘是可以禁止,但是如果把软键盘给禁止掉的话,input框是获取不到焦点的,所以还是得研究研究pad 扫描枪怎么填充值的;

632541832@qq.com

632541832@qq.com

我也做过这样的扫描功能,解决方案是获取焦点后,用plus调用系统,强制隐藏键盘,其实键盘在弹出来的时候隐藏,前台会有一个延迟,但是影响不大,能够满足要求

  • 869345109@qq.com (作者)

    你好;楼上的;你这个解决方案案例可以供参考一下么;感激不尽

    2017-09-15 16:40

  • isnotnull

    有示例么 也是这个问题 NI个 LI 放input 而且每次扫完 聚焦到另外的LI的input 他们的的DIV 伪装完全都是不是很适合。

    2017-10-26 12:05

bailtng@163.com

bailtng@163.com

獲取焦點,然後調用imm.hideSoftInputFromWindow(nativeWebview.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);強制隱藏軟鍵盤,不過效果就是軟鍵盤會閃燈一下。

  • 869345109@qq.com (作者)

    这个方法我试过;我这里没试成功

    2017-09-16 15:19

  • 869345109@qq.com (作者)

    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);

    imm.toggleSoftInput(nativeWebview.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 代码是否这样的;因为我是运行这个的时候 “nativeWebview.getWindowToken(),” 这个一直报错误


    Uncaught TypeError: Cannot call method 'getWindowToken' of undefined at template/quarantdetail.html:122

    2017-09-16 17:34

  • bailtng@163.com

    nativeWebview = plus.webview.currentWebview().nativeInstanceObject(); openWindow打開當前頁面,要傳唯一ID過來

    2018-12-05 15:01

uniapper

uniapper - abc

做个假的input,希望能帮到你

    <style type="text/css">  
        .field {  
            height:30px;  
            width:200px;  
            border: 1px solid ;  
            padding:5px;  
            line-height: 30px;  
        }  
        .field .pointer  {  
            height:100%;  
        }  
        .field .pointer.focus {  
            border-left: 1px solid;  
        }  
    </style>  
    <div class='field'>  
        <div class="pointer focus"></div>  
    </div>  
    <button id="scan">模拟扫描显示</button>  
    <script src="js/zepto.min.js" type="text/javascript" charset="utf-8"></script>  
    <script type="text/javascript">  
        (function($){  
            var oPointer = $(".field .pointer");  
            var flash = setInterval(function(){  
                if(oPointer.hasClass('focus')){  
                    oPointer.removeClass('focus');  
                }else{  
                    oPointer.addClass('focus');  
                }  

            }, 600);  

        $('#scan').on('click', function(e){  
            clearInterval(flash);  
            $('.field').text('77777777777');  
        });  
        })(Zepto);  
    </script>
uniapper

uniapper - abc

没弄过扫描枪,不过猜测是否系统就是将它认为是键盘??如果是的花那么下面的改进的代码应该可以。


    <style type="text/css">  
        .field {  
            height:30px;  
            width:200px;  
            border: 1px solid ;  
            padding:5px;  
            line-height: 30px;  
        }  
        .field .pointer  {  
            height:100%;  
        }  
        .field .pointer.focus {  
            border-left: 1px solid;  
        }  

    </style>  
    <div id="ipt" class='field'>  
        <div class="pointer focus"></div>  
    </div>  
    <input type="hidden" name="scanRs"  />  
    <button id="temp" style="width:0; height:0; padding:0; border:0"></button>  

    <script src="js/zepto.min.js" type="text/javascript" charset="utf-8"></script>  
    <script type="text/javascript">  
        (function($){  
            var flash = null;  

            var flashFn = function(domObj){  

                    console.log(domObj);  
                    if(flash !== null){  
                        return ;  
                    }   
                    console.log(flash);  
                    flash = setInterval(function( ){  
                                                console.log('Flashing... ' (  new Date()));   
                        if(domObj.hasClass('focus')){  
                            domObj.removeClass('focus');  
                        }else{  
                            domObj.addClass('focus');  
                        }  

                    }, 600);  
                }  

            flashFn($('.field .pointer'));  

            $('#temp').focus();  

            $('#ipt').on('click', function(e){  
                clearInterval(flash);   
                $('#temp').focus();   
                $(this).html('<div class="pointer focus"></div>');    
            })  

            $('#temp').on('keyup', function(e){   
                clearInterval(flash);   
                var val = $('#ipt').text();  
                val  = e.key;  
                $('#ipt').text(val);  
                console.log(e.key);  
            })  
        })(Zepto);  
    </script>
isnotnull

isnotnull

困扰我2天了。也是这个问题

869345109@qq.com

869345109@qq.com (作者)

关于mui 禁用软键盘;目前有更好的解决方案吗

869345109@qq.com

869345109@qq.com (作者)

有一起解决的吗

869345109@qq.com

869345109@qq.com (作者)

欢迎探讨

13069468021@163.com

13069468021@163.com - 游刃于It

楼主解决了么

nuqut@qq.com

nuqut@qq.com

楼主解决了么

604701422@qq.com

604701422@qq.com

楼主解决了吗? 要是解决了请告诉小弟怎么解决的 感激不尽

540211661@qq.com

540211661@qq.com

给设置readonly="readonly",点击这个input,这个input就获取焦点了,不会弹出键盘,用js 加个闪动的边框或者其他的标识,表示这个input focus,pad扫到的值会填充到里边的。
如果需要既可扫描,又可输入,那就在输入框旁边做一个按钮,点击改变是否readonly,不是readonly,就可以手动输入,是readonly,就扫描 不弹出键盘。

  • 540211661@qq.com

    我自己试过 ,真实可行

    2019-08-14 16:30

  • 翻皮的鱼

    回复 540211661@qq.com: 你 这个 输入框 都 readonly了 扫描条码,值怎么填充到 输入框的?能说的具体点吗 ,我最近也做一个pda 的入库页面,遇到这个问题

    2019-08-17 16:26

  • 540211661@qq.com

    回复 翻皮的鱼: 输入框 readonly 状态 ,focus 状态 还是有的,点击readonly 状态的输入框 ,然后用的pda的扫描条码,条码内容 就自动到了 输入框内

    2019-08-19 08:55

翻皮的鱼

翻皮的鱼 - 80后IT男

和楼主同样的需求,也是做的pda 扫描相关的功能

1131706591@qq.com

1131706591@qq.com

大家好,请问怎么解决啊?我也遇到了这个问题

要回复问题请先登录注册