美文网首页
关于Jquery与扫码枪的那点事儿

关于Jquery与扫码枪的那点事儿

作者: 末世狂人 | 来源:发表于2019-12-25 11:22 被阅读0次

    废话不多说,直接上代码!

    PS:前提,首先确定扫码枪扫码后的结束符,以回车结束。至于怎么设置,请咨询你的卖家!

    约定:需要获取扫码枪结果的input的ID为keyWords,页面上其他的input或其他输入控件是有ID的

    PS:敲黑板:页面上其他的input或其他输入控件是有ID的

    $(function () {
            //keyword获得焦点
            $("#keyWords").focus();
            $(document).keyup(function(event){
                var val = $("#keyWords").val();
                //伪类 是否获得焦点判断
                var $focused = $(':focus');
                var eventCode = event.keyCode;
                if(eventCode ==13 && (val!=null && val!='')){
                    //你的回车逻辑
                                    test();
                    return false;
                }
                /*排除其他特殊字符,只对数字、字母、逗号进行录入*/
                else if((eventCode >=48 && eventCode<= 57)||(eventCode >=65 && eventCode<= 90)||(eventCode ==102)){
                    //如果keyWords获得焦点,那么输入值的时候就不进行操作。避免在输入值和输入汉字的时候出现字符重复
                    //如果没有获得焦点,那么将扫码枪获得的值放到keyWords中
                    var hasFocus = $('#keyWords').is(':focus');
                    //在有多个input的情况下,其他input输入值后会将输入的值也放入keyWords中,这样我们就需要对其他可输入值的控件进行验证
                    //获取当前获得焦点的控件ID
                    var activeId = document.activeElement.id;
                    console.log("当前控件的ID:"+activeId+" 当前控件的类型是:"+document.activeElement.tagName);
                    if(!hasFocus && (activeId==null||activeId=='')){
                        $("#keyWords").val(val+event.key);
                    }
                    return true;
                }
            });
        });
    

    如果你的页面上除了keyWords的input就没有其他的输入控件了,那么可以在你的回车业务后面加上让所有控件失去焦点,这样就不用去判断当前的获得焦点的ID了

    //移除页面上所有控件的焦点事件(所有控件失去焦点)
            $("*").blur();
    

    相关文章

      网友评论

          本文标题:关于Jquery与扫码枪的那点事儿

          本文链接:https://www.haomeiwen.com/subject/xtfcoctx.html