如何在输入字段中获得“focusout”或“focus”的键码

时间:2018-02-22 05:57:03

标签: jquery

我正在尝试获取focusinfocusout的{​​{1}}和tab密钥代码。但只获得shift+tab作为值。

如何在输入字段上获取0tab上的值?

这是我的尝试:

shift+tab

Fiddle

1 个答案:

答案 0 :(得分:2)

如您所见,focusout事件未在事件对象中公开which属性。您必须处理keydown事件。 (您无法使用keyup,因为当您按下Tab键时元素会失去焦点,而不是在您放松时,因此您的文本框无法获得keyup个事件当你离开它时。)

这里的一些代码似乎正在寻找你正在寻找的东西:

var cKey;
var cKeyShifted;
$('body').on('keydown', '#textbox', function(e) {
    cKey = e.which;
    cKeyShifted = e.shiftKey;
});
$('body').on('focusout', '#textbox', function(e) {
    $('#log').html('cKey = ' + cKey + ' ' + cKeyShifted);
    //got to clear the variables, otherwise you can tab out of the box, click
    //back in, click out of it again, and they will not have changed
    cKey = 0; 
    cKeyShifted = false; 
});

因此,将e.which存储到keydown事件中的变量中。然后在focusout事件中,评估(并清除)变量。如果它不是9,那么你没有使用tab键失去焦点。

请注意,tabshift+tab都具有相同的e.which值。您必须评估shiftKey事件的keydown属性,以确定是否使用Tab键按下Shift键。