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

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

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与扫码枪的那点事儿)