2017-05-30 4 views
1

Keydown auf body-Element-Ereignis hört auf zu deaktivieren, nachdem Button-Element durch seine Click-Event-Handler deaktiviert wurde.jQuery Keydown Ereignisbehandlung Problem in Mozilla Firefox

Aktionen Sequenz:

  • keydown

  • Klick auf den Button

  • feuert keyDown

  • Klick auf Körper aufhört zu feuern

  • keydown st Kunst Brennen wieder

Hinweis: Dieses Verhalten tritt nur in mozilla firefox. In Google Chrome funktioniert es wie es sollte.


 
$(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

this.disabled = true hinzufügen. Ich frage mich, ob Sie nach dem Klicken auf den Button Fokus auf die Schaltfläche verlassen, was Töten und Keydown-Ereignisse ist? Was passiert, wenn Sie 'this.blur()' nach dem 'this.disabled = true' hinzufügen? – SpoonNZ

+0

half es! vielen Dank! –

+0

Habe dies als Antwort für Sie dann – SpoonNZ

Antwort

0

Nachdem Sie auf die Schaltfläche klicken Sie den Fokus auf die Schaltfläche gehst, die tötet und keydown Veranstaltungen. Arbeiten hier in Firefox 42,0 auf OSX

Was passiert, wenn Sie this.blur() nach dem

1

es wegen Browser-Verhalten ist, in Chrome, wenn die Schaltfläche Browser von der Schaltfläche den Fokus automatisch wird angeklickt wird und auf den Körper konzentrieren. Firefox zeigt dieses Verhalten jedoch nicht, es tut nichts, wenn die Schaltfläche deaktiviert ist und sich auf dasselbe Element, z. B. die Schaltfläche, konzentriert. Aber wenn es nicht deaktiviert ist, wird es sich auf den Körper konzentrieren.

Vom Clicking and focus von Button Elemente

Ob auf einem <button> klicken bewirkt, dass es zu (standardmäßig) fokussiert werden variiert je nach Browser und Betriebssystem.

Für seine Arbeiten Sie .blur() auf den Knopf verwenden wie,

$(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

geschrieben, danke! –