簡體   English   中英

當調用.focus()並返回false時,jquery focusin不起作用。

[英]jquery focusin doesn't work when calling .focus() and return false;

我對jQuery(1.7.2)的focusin / focusout事件有疑問。

我在一個div中有2個輸入。 當其中一個獲得關注時,我想向div添加一個類。 如果所有輸入都不再具有焦點,我只想刪除此類。


$(function() {
  $('#container').on('focusin',function(){
    $(this).addClass('test');
  }).on('focusout',function(){
    if ($(this).find('input:focus').length) return;
    $(this).removeClass('test');
  });

  $('#container input').on('keydown',function(e) {
    var keycode = e.keyCode || e.which;
    //When Tab or Return, switch input
    if (keycode == 9 || keycode == 13) {
      $($(this).attr('data-target')).focus();
      return false;
    }
  });
});

<div id="container">
    <input type="text" id="a" data-target="#b">
    <input type="text" id="b" data-target="#a">
</div>

http://jsfiddle.net/pqUFX/

當我用鼠標單擊輸入以切換焦點時,效果很好。 但是,當通過調用$('#b').focus();將焦點設置為輸入的keydown()事件內的其他輸入時$('#b').focus(); 即使檢查div中現有的焦點,該類也會被刪除。

可能是因為我的return false;return false; ,因此該標簽不會兩次切換? 您對此有其他替代解決方案嗎?

不知道為什么它不能真正起作用(它應該),但是為什么不使用這樣的東西:

$(function() {
    $('#container input').on('keydown',function(e) {
        var keycode = e.keyCode || e.which;
        //When Tab or Return, switch input
        if (keycode == 9 || keycode == 13) {             
            $($(this).attr('data-target')).focus();
            $(this).parent().addClass("test");
            return false;
        }
    }).focusin(function() {
        $(this).parent().addClass("test");                  
    }).focusout(function() {
        $(this).parent().removeClass("test");                  
    });
});​

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM