jQuery-click-Ereignis - Wie zu sagen, wenn die Maus geklickt oder die EINGABETASTE gedrückt wurde?

Habe ich ein usability-Problem auf einer Website von mir. Ich habe eine Reihe von Registerkarten, die jeweils eine form. Wenn Sie klicken Sie auf die Registerkarte link, es gibt den focus auf die erste textbox in der Registerkarte Inhalt Körper. Maus-orientierte Menschen Liebe dieses "feature". Das problem ist, wenn die Tastatur-orientierte Anwender mit der TAB-Taste auf Ihrer Tastatur, um durch die Registerkarten. Sie drücken Sie die EINGABETASTE auf der Registerkarte, die Sie betrachten möchten, das click-Ereignis ausgelöst, und die Registerkarte zeigt nach oben, aber der Fokus wird auf das Textfeld, die Anpassung Ihrer tab-Reihenfolge komplett. Also, wenn Sie auf die tab-Taste, die Sie möchten, gehen Sie auf die nächste Registerkarte auf dem Bildschirm, aber da der Fokus wurde verschoben in das Formular ein, Sie können nicht leicht an die nächste Registerkarte über die Tastatur.

So, im click-Ereignis brauche ich, um zu bestimmen, wenn Sie tatsächlich angeklickt haben es mit einer Maus-Taste. Ist das möglich? Mein Erster Versuch war dieser:

$("#tabs li a").click(function(e) {
  var tab = $(this.href);
  if(e.keyCode != 13)
    $("input:first", tab).focus();
});

Aber keyCode ist immer 0. Die which Eigenschaft ist auch immer 0. Bitte um Hilfe!!

  • Wahrscheinlich können Sie die hacken rund um es, indem Sie ein .focus () - handler auf das Textfeld mit ein wenig Logik.
  • Äh, nicht wirklich. Sobald Augenmerk auf die textbox/dropdown ist es zu spät, sich zu erholen.
  • haha. dies ist eine schwierige Frage.
  • Ich glaube, ich habe es... siehe meine Antwort
  • Mit der rechten auf. Ich würde vorschlagen, so etwas wie, dass aber nicht wissen, wenn keydown-feuert, bevor Sie klicken. Gut zu wissen.
  • Es ist ein wenig hacky, aber Sie könnten wahrscheinlich prüfen, ob die Maus-position wird oben auf der Registerkarte das war nur geklickt, mit e.pageX und e.pageY.
  • Mit der Maus über den link, wenn Sie die enter-Taste verwendet wurde, leider. Sicher, es mag unwahrscheinlich sein, aber die ultimative Lösung ist zwingend in diesem Fall.

InformationsquelleAutor Josh Stodola | 2011-09-12
Schreibe einen Kommentar