0

我有这样的 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”时保留文本输入?

你可以在这里看到演示

4

2 回答 2

0

在该.keyup行之后添加:

if (e.target.tagName.toLowerCase() == 'input')
        return;
于 2013-07-31T08:50:34.043 回答
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);
    }
});

更新的小提琴

于 2013-07-31T08:33:07.230 回答