2017-05-30 76 views
1

Keydown on body-element事件在通過單擊事件處理程序禁用button-element後停止觸發。Mozilla Firefox中的jQuery keydown事件處理故障

操作順序:

  • 的keydown被燒成

  • 點擊按鈕

  • 的keydown停止射擊

  • 點擊身體

  • 的keydown ST藝術再次發射

提示: 這種行爲只發生在Mozilla Firefox中。 在谷歌瀏覽器中它的工作原理應該如此。


 
$(document).ready(function(){ 
 
    $('body').keydown(function() { 
 
     console.log('<body> keydown'); 
 
    }); 
 

 
    $('#button').click(function() { 
 
     this.disabled = true; 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="button">Button</button>

+0

在OSX這裏做工精細的Firefox 42.0之後添加this.blur()什麼。 不知你點擊按鈕後是否將焦點留在了按鈕上,哪些是殺戮和關鍵事件?如果在'this.disabled = true'之後添加'this.blur()'會怎麼樣? – SpoonNZ

+0

它幫助!非常感謝你! –

+0

已經發布了這個作爲你的答案,然後 – SpoonNZ

回答

0

後你點擊你的按鈕,這是殺戮和離開的keydown焦點的按鈕事件。

,如果你的this.disabled = true

1

這是因爲瀏覽器的行爲,在Chrome中,當按鈕被點擊瀏覽器會自動從按鈕進行對焦並專注於身體。然而,Firefox並沒有出現這種行爲,當按鈕被禁用並且關注相同元素(即按鈕)時,它什麼也不做。但是,如果它沒有被禁用,它將關注身體。

從按鈕元素的Clicking and focus

無論是點擊一個<button>它會導致(默認)成爲 集中通過瀏覽器和操作系統不同而不同。

對於它的工作,你必須像按鈕使用.blur()

$(document).ready(function() { 
 
    $('body').keydown(function() { 
 
    console.log('<body> keydown'); 
 
    }); 
 

 
    $('#button').click(function() { 
 
     this.disabled=true; 
 
     $(this).blur(); 
 
    }); 
 
});
.disabled { 
 
    border: 1px solid #999999; 
 
    background-color: #cccccc; 
 
    color: #666666; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<button id="button">Button</button>

+0

明白了,謝謝! –