jQuery键盘按下并聚焦到文本框(不同的情况)

时间:2013-07-31 07:18:06

标签: javascript jquery

我有这样的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

2 个答案:

答案 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);
    }
});

updated fiddle

答案 1 :(得分:0)

.keyup行之后添加此内容:

if (e.target.tagName.toLowerCase() == 'input')
        return;