1.问题
键盘口扫码枪相当于键盘输入,只要通过获取文本框焦点,扫码输入获取到字符串,经过处理绑定到前台即可。但是页面中我不想要显示这个文本框,通过style="display:none"和.hide()隐藏后,文本框无法获取输入--即得不到扫码后的字符串。
2.思路
键盘口扫码枪需要用一个textbox接受输入(相当于键盘输入,可添加回车符后缀),可以这样处理,通过一个“扫码”按钮打开一个子页面,该子页面中只有一个文本框接受扫码枪输入,然后扫码结束后自动关闭该子页面(通过调用父页面window.parent.closes()方法)并将接收到的字符串传递(调用父页面方法)给父页面,完成数据绑定。子页面利用keydown事件判断keycode==回车符code码,来截取字符串通过调用父页面方法绑定到前台展示界面。
3.关键字
父页面、子页面、iframe、调用父页面方法,键盘口扫码枪、keydown事件、父子页面传递数据
下面是图片及代码:
$(function () {
$("#Text1").focus();
});
$(document).keydown(function (event) {
var keyCode = event.keyCode;
if (keyCode == "13") {
var value = $("#Text1").val();
var code = value.split('|');
var clzzcmc = code[3];//车辆制造企业名称
var cllxid = code[4];//车辆类型
var clpp = code[5];//车辆型号
var clxh = code[6];//车辆型号
var clsbdh = code[7];//车辆识别代号
var fdjh = code[9];//发动机号
var fdjxh = code[10]; //发动机型号
var pl = code[12];//排量
var edgl = code[13];//功率
var hdzzl = code[14];//额定载质
var hdzk = code[15];//载客人数
var ccrq = code[16]==null?"":code[16].substr(0, 4) + "-" + code[16].substr(4, 2) + "-" + code[16].substr(6, 2);
var csysid = code[17];//车身颜色
var rlzlid = code[18];//燃油种类
var zzl = code[19];//总质量
var zbzl = code[20];//整备质量
window.parent.clone(clzzcmc, cllxid, clpp, clxh, clsbdh, fdjh, fdjxh, pl, edgl, hdzzl, hdzk, ccrq, csysid, rlzlid, zzl, zbzl);//调用父页面的clone()方法,将数据绑定到父页面
window.parent.closes();//关闭子页面
}
});