.live侦听器检查用户是否按Tab键以关注当前输入字段

时间:2012-03-12 03:38:56

标签: javascript jquery

我有一些输入字段相互叠加,我希望能够检查用户是否使用了tab键或单击以关注当前输入字段。 检查.live('click', function() {很容易,但我不知道如何检查他们是否使用tab来关注当前输入字段。

3 个答案:

答案 0 :(得分:6)

我确信有很多方法可以做到这一点,但一种方法是监听keyup事件,然后找出关注的元素,如果有的话:

$(document).on('keyup', function(e) {
    if(e.keyCode == 9) {
        var input = $(this).find('input:focus');
        // input is the element that has focus after the tab key was pressed
    }
});

这可能无法保证tab键用于将焦点带入元素,但它可能足以满足您的需求。

如果要检查用户在输入字段获得焦点之前使用的事件类型,请尝试:

$(document).on('keyup', function(e) {
    if(e.keyCode == 9) {
        findFocus(e);
    }
}).on('click', 'input', findFocus);

function findFocus(e) {
    var input = $(document).find('input:focus');
    if ( input.length ) {
       alert('Input was focused using '+e.type);
    }
}

另请注意,我使用.on()事件而不是.live(),因为live在1.7中已弃用。

答案 1 :(得分:1)

听起来你想要“焦点”事件,如果用户点击字段的OR标签就会触发该事件

.on('focus', function() {});

此答案还指出“live”已弃用,请改用“on” https://stackoverflow.com/a/4944344/703173

答案 2 :(得分:0)

$('input').on('click', function() {
      $(this).data('clicked', true);
   }).on('focus', function() {
      setTimeout(function(){
         if($(this).data('clicked') == true){
            // clicked to focus      
         }else{
            // used tab key to focus
         }
         $(this).data('clicked', false);
     }, 100);
   });