我有这样的JS:
$(document).keyup(function(e) {
var key = String.fromCharCode(e.keyCode);
if (key.match(/[0]/) && !$('#acc').is(':focus'))
{
$('#acc').focus();
$('#acc').val($('#acc').val() + key);
}
else if (key.match(/[PA]/) && !$('#code_read_box').is(':focus'))
{
$('#code_read_box').focus();
$('#code_read_box').val($('#code_read_box').val() + key);
}
});
和这样的HTML:
<input type="text" id="acc" value=""/>
<br>
<input type="text" id="code_read_box" value=""/>
现在,当我测试用“0”键入键盘时(没有任何焦点到文本框,它是自动对焦),那么它将聚焦到文本框acc。但问题是当我键入“PA0L02”时,第一个“PA”会聚焦到文本框代码读取框,但在“0L02”之后,它将聚焦到文本框acc。
我想要的是如果在文本框代码读取框中包含“0”时如何保留文本输入?
您可以看到Demo here
答案 0 :(得分:0)
并不完全清楚你想要实现的目标,但如果你删除.focus线,那将阻止光标跳转......
$(document).keyup(function(e) {
var key = String.fromCharCode(e.keyCode);
if (key.match(/[PA]/) && !$('#acc').is(':focus')) {
//$('#acc').focus();
$('#acc').val($('#acc').val() + key);
}
else if (key.match(/[0]/) && !$('#code_read_box').is(':focus')) {
//$('#code_read_box').focus();
$('#code_read_box').val($('#code_read_box').val() + key);
}
});
答案 1 :(得分:0)
在.keyup
行之后添加此内容:
if (e.target.tagName.toLowerCase() == 'input')
return;