2012-04-14 7 views
2

Wenn sich der Fokus auf einer Schaltfläche in einem JQuery-Dialogfeld befindet, führt die Leertaste zwei Aktionen aus: Sie wählt die Schaltfläche aus und scrollt durch das Fenster. Leute, die mit der Leertaste als Werkzeug zum Auswählen von Tasten vertraut sind, erwarten die erste, finden aber die zweite unangemessen und unangemessen.Wie verhindert man, dass die Seite scrollt, wenn eine JQuery-Schaltfläche aktiviert ist und die Leertaste gedrückt wird?

Also die Frage: Wie verhindere ich das Scrollen der Seite? Ich hatte gedacht, dass es nur eine Frage von false aus dem Button-Handler ist, aber das scheint nicht wahr zu sein.

Antwort

8

Ich habe die vorgeschlagene Lösung hier und anderswo ausprobiert und keine von ihnen funktionierte für mich. Was schließlich arbeitete, war ein Dokument weiten keydown Handler wie folgt aus:

$(document).keydown(function (e) { 
    var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0; 
    if ((key == 32) && (e.target.className != null) && (e.target.className.indexOf("ui-button") != -1)) 
     e.preventDefault(); 
}); 

Der Schlüssel == 32 offensichtlich eine Prüfung für die Leertaste ist. Der Klassenname ist eine Überprüfung, ob das UI-Element (Benutzeroberfläche) eine JQuery-Schaltfläche ist. Ohne die Knopfüberprüfung ist die Leertaste überall deaktiviert.

+1

groß :) Also könnten Sie die Frage als gelöst markieren? BTW, Sie können die var-Deklaration auf diese Weise überschreiben 'var key = e.charCode || e.keyCode || 0; ' – pomeh

+0

Danke für die Erinnerung und den Code Vorschlag @pomeh! –

Verwandte Themen