移动端html5页面,用js禁止弹出软键盘输入法

       移动端input文本框默认的焦点行为会弹起软键盘输入法,如果直接设置readonly则聚焦不了,因为需要多次聚焦,每次都弹出键盘又影响用户体验机页面美观

      最近遇到一个问题,就是h5移动端,input文本框聚焦会弹出输入法,而我需要外接称重设备,称重设备会把重量回传到屏幕的光标处,也就是说我这个input框需要一直聚焦,无论用户点哪里最后还要聚焦到这个文本框,重量回传后,用户可能要手动修改,我这里用html写了个小键盘,方便用户输入及修改用户填完重量选择运输方式后继续称重,所以就需要光标始终在这个框内.

       所以我是这样做的,给文本框加上autofocus 属性,这样页面加载中会聚焦到此文本框.且不会弹出软键盘.

<input class="rowWeight"   autofocus placeholder="过称或输入重量"  datatype="text" inputmode="decimal" desc="重量" type="text" id="WEIGHT" name="WEIGHT" >

       但是后续重新聚焦会弹起软键盘,所以我们需要对该元素的会弹起键盘的时间进一步处理,先处理该元素的获取到焦点的的事件,获取焦点时立刻设置成只读状态,延迟200毫秒后移除只读属性,这时候你会发现光标还是会在文本框内,不过不会弹出输入法;我这里是需要无论客户怎么操作焦点都会在文本框内,所以对失去焦点做了处理,元素失去焦点后500毫秒后重新获取焦点.需要注意的是元素的点击事件也会触发弹起软键盘,所以我们还得对点击事件做处理,我这里的处理方法是点击元素直接使元素失去焦点,由失去焦点事件处理500好毫秒重新聚焦. (注意长按文本框也回弹起软键盘,也得进一步处理)如果你们有更好的方法欢迎评论.

$(function(){
    $("#WEIGHT").focus(function () {//处理聚焦事件
        var obj = $(this);
        obj.prop("readonly","readonly");//元素设置成只读 这样就不会弹起软键盘了
        setTimeout(function(){/100毫秒后解除只读属性
            obj.removeAttr("readonly")/
        },100)
    }).blur(function () {//处理失焦事件
        var obj = $(this);
        setTimeout(function(){//500毫秒后重新聚焦
            obj.focus();
        },500);
    }).on("click",function(){//这里点击事件也会弹起软键盘,也处理一下
        $(this).blur();//点击后立即失去焦点,有失去焦点事件处理
    })
})
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿比学长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值