我在用mui界面布局中;有时候场景需要输入框不需要弹出软键盘输入法;如何强制关闭呢?请各位同仁们讨教;谢谢啦
8***@qq.com
- 发布:2017-09-08 14:17
- 更新:2022-04-01 16:00
- 阅读:9987
如何强制禁用软键盘
分类:MUI
30 个回复
8***@qq.com (作者)
你好;这样的话;我文本框就没办法获取光标;我的目的禁用系统自带的软键盘;但是input 文本框还是可以通过其他方式输入值的
1***@qq.com - 90后
disabled="disabled"
回梦無痕 - 暂停服务
之前见到过一个做计算器的也差不多是这个需求,
是通过div仿造input,然后监听这个仿造的input的tap事件,控制弹出自制的键盘,
然后在自制键盘的js控制输入数字和仿造input的显示数字
8***@qq.com (作者)
<div contenteditable="true" id="t"> 你意思这种方式吗;或者你有更好的方案;给个代码参考一下啊
回梦無痕 - 暂停服务
contenteditable的话,还是会弹出键盘的,要用div伪装一个input,然后监听这个div触摸事件,然后弹出自己的键盘,你既然不想弹出系统键盘,肯定有自己做的键盘吧?然后放一个宽度2px的div到伪装input上,给他一个闪烁动画,然后根据自己的键盘输入,插入到伪装input中,这就完成了。
这是一个思路,我没有现成的代码,你自己写吧。
8***@qq.com (作者)
目前我这个需求都不需要软键盘;因为我是通过扫描枪扫描;扫描条形码方式;把值传递到文本框中的
回梦無痕
那就直接放一个div,js把数值插入到这个div就行了
2017-09-08 16:55
8***@qq.com (作者)
你说的我有个疑问;就是放一个div;然后怎么获取外部扫描枪扫的条形码的“值”;一般要光标在文本框中有焦点了;才能把值放到那个地方去;所以怎么用js填充到div 中呢;我有点没明白;谢谢
2017-09-08 17:02
回梦無痕
回复 8***@qq.com:楼下有代码。
2017-09-08 17:49
1***@qq.com - 90后
你的意思是通过js填值是吧,很简单啊
<input disabled="disabled" id="test" />
<script>
document.getElementById("test").value = "你要填入的值";
</script>
8***@qq.com (作者)
我这个是一个pda自带扫描枪;光标焦点在什么地方;值就会填充在什么地方;所以js应该是无法这么写的
回梦無痕
这个需求肯定能实现的,要看具体代码。因为总要有代码填充数值的
2017-09-08 18:04
上海Allen
你这个和我的需求差不多,我的是领料单扫描输入
2017-09-27 15:26
ivan8015
这个问题我也想解决,这样方便一些蓝牙的扫描头接入APP,如果Plus API能控制软键盘弹出和禁用就好了,现在只能够PDA扫描事件去控制了,一般PDA都会发扫描到条码就会发送一个广播的,APP就可以监听广播的方式获取扫描头返回值。
2017-10-09 10:45
1***@qq.com - 90后
我刚刚测试了,软键盘是可以禁止,但是如果把软键盘给禁止掉的话,input框是获取不到焦点的,所以还是得研究研究pad 扫描枪怎么填充值的;
6***@qq.com
我也做过这样的扫描功能,解决方案是获取焦点后,用plus调用系统,强制隐藏键盘,其实键盘在弹出来的时候隐藏,前台会有一个延迟,但是影响不大,能够满足要求
8***@qq.com (作者)
你好;楼上的;你这个解决方案案例可以供参考一下么;感激不尽
2017-09-15 16:40
isnotnull
有示例么 也是这个问题 NI个 LI 放input 而且每次扫完 聚焦到另外的LI的input 他们的的DIV 伪装完全都是不是很适合。
2017-10-26 12:05
b***@163.com
獲取焦點,然後調用imm.hideSoftInputFromWindow(nativeWebview.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);強制隱藏軟鍵盤,不過效果就是軟鍵盤會閃燈一下。
8***@qq.com (作者)
这个方法我试过;我这里没试成功
2017-09-16 15:19
8***@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
b***@163.com
nativeWebview = plus.webview.currentWebview().nativeInstanceObject(); openWindow打開當前頁面,要傳唯一ID過來
2018-12-05 15:01
uniapper - abc
做个假的input,希望能帮到你
8***@qq.com (作者)
怎么获取扫描枪的值呢
2017-09-28 15:39
uniapper - abc
没弄过扫描枪,不过猜测是否系统就是将它认为是键盘??如果是的花那么下面的改进的代码应该可以。
isnotnull
困扰我2天了。也是这个问题
8***@qq.com (作者)
关于mui 禁用软键盘;目前有更好的解决方案吗
8***@qq.com (作者)
有一起解决的吗
8***@qq.com (作者)
欢迎探讨
1***@163.com
上边说的问题 解决了么
2018-09-27 14:33
1***@163.com - 游刃于It
楼主解决了么
n***@qq.com
楼主解决了么
6***@qq.com
楼主解决了吗? 要是解决了请告诉小弟怎么解决的 感激不尽
zhagons
给<input type="text" >设置readonly="readonly",点击这个input,这个input就获取焦点了,不会弹出键盘,用js 加个闪动的边框或者其他的标识,表示这个input focus,pad扫到的值会填充到里边的。
如果需要既可扫描,又可输入,那就在输入框旁边做一个按钮,点击改变是否readonly,不是readonly,就可以手动输入,是readonly,就扫描 不弹出键盘。
zhagons
我自己试过 ,真实可行
2019-08-14 16:30
翻皮的鱼
回复 zhagons: 你 这个 输入框 都 readonly了 扫描条码,值怎么填充到 输入框的?能说的具体点吗 ,我最近也做一个pda 的入库页面,遇到这个问题
2019-08-17 16:26
zhagons
回复 翻皮的鱼: 输入框 readonly 状态 ,focus 状态 还是有的,点击readonly 状态的输入框 ,然后用的pda的扫描条码,条码内容 就自动到了 输入框内
2019-08-19 08:55
红发海贼
回复 zhagons: 我信你个鬼,不行的
2019-12-11 09:32
zhagons
回复 红发海贼: 你试了 没有 我们公司仓库 已经用了 几年了
2020-06-10 08:38
落魄实习生
回复 zhagons: 是点击关闭readonly?然后开启对焦?
2020-07-03 09:21
netlock
有联系方式吗 想问问你咋做的
2020-07-16 14:53
翻皮的鱼 - 80后IT男
和楼主同样的需求,也是做的pda 扫描相关的功能
1***@qq.com
大家好,请问怎么解决啊?我也遇到了这个问题
不名用户_蒋某
关于PDA扫描枪:
1、input在当前为监听状态的情况下,扫描获取到的值会自动添加到input中,如果用blur(),那么也会移除掉监听,其实readonly也跟blur差不多,在JS中我试过很多方式,效果都不是很理想。
2、最好的处理方法是开发原生模块,市场上大多数PDA都为android版,对应的PDA都有模块开发文档,我封装过的PDA模块有世麦C5000,新大陆MT66,原生模块流程从注册服务--接收广播--在到发送给前端,代码不过100行。
不名用户_蒋某
QQ:1282771577,微信:18229911633,欢迎大家添加探讨
2020-03-30 16:24
skysowe
同样遇到这个问题,尝试各种方法,最后只好宣告放弃了。
最大的问题是,设置焦点,而在移动端,input框的焦点通常会触发软键盘事件,怎么解决这二者之间的纠缠,就成了大问题。。。
尝试做过简单demo,就2个页面,第一个页面有一个input框,调用了focus()默认获得焦点,然后有一个按钮打开一个新页面
在第一个框里输入了内容,然后点击按钮,打开一个新页面,接受键盘输入,然后返回上页,让之前的input框还获得焦点,同时不弹出软键盘,以期可以让扫描枪连续工作。
当只有2个页面时,此时工作是正常的,,如果在这两个页面之前再加一个页面,用button来打开input框的那个页面,focus就失效了,,后来改成a标签模拟成按钮,focus又正常了,但是第三个页面返回到第二个页面时,focus又获取不到焦点了。settimeout之类的延时也用了,根本不管用。
input框除了接收扫描输入外,还要接受手动输入,此时如果绑定了键盘回车事件,focus又不灵了,哪怕是在绑定之后再加focus也不管用。
只有一种方法管用,就是input框加一个 onblur="this.focus();",这种方法管用,但是我这个页面不止一个input框呀,这样一来其他input框就无法输入了,当页面只有一个input框时(比如IM聊天界面),这个方法可以用,其他情况都不适用。
也设想过拦截安卓扫描枪的广播,因为不了解相关的底层内容,手边也没有相关设备,而且不同厂家的安卓扫描枪不知道是否不一样。
所以最后只能放弃了。
PS.奇怪的是,在安卓平台focus总是时不时失灵的情况,在iPhone上却总是工作正常,当然iOS很霸道,只要有了焦点就强制弹软键盘。
skysowe
我是在关闭最后一个页面之前,用一个evalJS回调来让上一个页面的setfocus函数来让input框获得焦点的,然后plus.webview.currentWebview().close()关闭当前页面;延时什么的也都用过了,不管用。
多次反复实验的时候,其实input是获得了焦点的,肉眼能够看到热点的那根竖线,但是马上就失去了,不知道是不是plus.webview.currentWebview().close()关闭页面时,拿走了焦点。
但是很奇怪的是,如果只有最简单两个页面,则永远是正确的!!!只要页面多于2个,就over了。
回梦無痕
安卓上有效,ios还没找到方法, onfocus事件中执行:
2020-04-03 15:22
前端小白q
我想问一下解决了吗,我也碰到了这个问题,头大!!!
6***@qq.com - 清风徐来
<input
type="text"
v-model="result.scanCode"
readonly
ref="input"
class="input">
我也遇到了楼主的问题,最后这样解决的。
直接给input 设置readonly,扫码后值自动通过v-model同步到结果中去,再通过watch 去做操做
浙江小牛寻宝
我用Uniapp写的app app里面不生效啊,我看了input原生的才有readonly uni自己的Input都没有readonly属性,头大
2022-04-01 14:53
1***@qq.com
回复 浙江小牛寻宝: 解决了吗
2022-06-22 16:50
a***@hotmail.com
我来终结一下彻底禁用软键盘的办法
https://ask.dcloud.net.cn/article/39281
星星不怕黑
没反应
2022-01-18 10:55
浙江小牛寻宝
找到解决方法了兄弟们,我找了半天https://ext.dcloud.net.cn/plugin?id=2548
当写入值的时候,会出发键盘事件。不需要用input焦点来获取值了
1***@qq.com
这个键盘事件只能获取到英文和数字吧 如果是中文怎么办呢
2022-06-22 16:51