废话不多说,直接上代码!
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();
网友评论