Ich habe einige Radio-Buttons eingerichtet wie folgt:
%Vor%Das mache ich zu jQueryUI-Buttons wie folgt:
%Vor%Dies ist der resultierende HTML:
%Vor% Die Schaltflächen funktionieren, aber wenn ich auf einen klicke, wird der Browser-Ansichts-Port an den Anfang der Seite zurückgegeben, genauso wie es passiert, wenn Sie auf einen <a href="#">link</a>
-Link klicken.
Ich verwende jQuery 1.4.2 und jQueryUI 1.8.7. Wie kann ich dieses Verhalten verhindern? Danke fürs Lesen.
EDIT: Der <a href="#">link</a>
-Teil fehlte.
Ich bin kürzlich auf dieses Problem gestoßen und habe tatsächlich eine Lösung gefunden, die Ihnen in Abhängigkeit von Ihrem CSS helfen kann.
Grundsätzlich, wenn Sie Ihre Radioknöpfe von der Seite mit etwas wie verstecken:
%Vor% Oder etwas ähnliches ist das top : -10000px ;
, das das Problem ist.
Das heißt, wenn der Radioknopf durch den Label-Klick zwangsläufig fokussiert wird, versucht die Seite, ihn durch Scrollen des Browser-Viewports in den Radiobutton in Sicht zu bringen. Da der minimale scrollTop-Wert für den Browser 0
ist, scrollt er nach oben.
Wenn Sie nur die Regel top : -10000px ;
entfernen, wird das Problem behoben.
Hoffe, das hilft.
ps. Der Grund, warum preventDefault und stopPropagation in dieser Instanz nicht funktionieren, wie in anderen Kommentaren erwähnt, ist, dass sie das Standardverhalten des Browsers nicht anhalten, um das Formularfeld zu fokussieren, wenn auf das Label geklickt wird.
Ich habe versucht, das Problem neu zu erstellen, aber es ist fehlgeschlagen. Ich habe das in FireFox 3.6.13, Google Chrome 8.0 und Internet Explorer 8 überprüft.
Können Sie weitere Einzelheiten angeben, um das Problem neu zu erstellen, oder eine Test-HTML-Seite sein?
Haben Sie ein Klickereignis für die Optionsfelder? Wenn Sie einen auf Ihrem Ereignishandler haben, können Sie die Verbreitung des Ereignisses stoppen und es einmal versuchen.
%Vor%Aber welcher Code auch immer hier gegeben wird, deutet nichts an, was zu diesem Verhalten führen könnte. Wenn Sie eine Testseite haben, aktualisieren Sie bitte den Beitrag mit diesem.
Das Problem ist, dass wenn Sie auf die Beschriftung des Optionsfelds klicken, die Schaltfläche automatisch den Fokus erhält.
Verwenden Sie keine Positionseigenschaften wie top:-100000000px
und left:-100000000px
.
Ich denke, Sie müssen nur Visibility Eigenschaft des Eingabetextes auf Versteckt setzen.
%Vor%Ich hatte das gleiche Problem
Nur-FF-Schnellkorrektur (bezogen auf Ihren Code) wäre
%Vor%Lösung für FF und IE
Der Täter war eine CSS-Regel im Hauptstil:
%Vor%, die im Konflikt mit jQueryUI .ui-helper-hidden-accessible
class
Ich musste diese Regel spezifischer machen und sie nur auf die "echten" Formulare beschränken, die für die Datenübermittlung verwendet werden.
%Vor%Dies ist nicht das Verhalten der Benutzeroberfläche von jquery, wie es in Ссылка
zu sehen istEs ist am wahrscheinlichsten , ein anderer Code, den Sie diesen Schaltflächen hinzufügen.
Was passiert, wenn Sie auf diese Optionsfelder klicken? Sie verstecken oder laden Inhalt oder etwas anderes?
Wenn Sie an diese Optionsfelder einen anderen Handler anschließen, zeigen Sie diesen Code bitte an, da dies sehr wohl der Täter sein könnte.
Verwenden Sie
ähnlich wie Christos, um das Stylesheet zu überschreiben top: auto;
Gefunden in einem Wordpress-Fehlerbericht: Ссылка Die Idee ist, dass sowohl "links" als auch "oben" gesetzt werden "zu großen Negativen sollte nicht notwendig sein.
Hinweis für die Kommentatoren, die den Click-Handler oder die href: jquery-ui behandeln, legen die Handler für ihre Zwecke fest, also würde ich sie lieber nicht ändern und dann Accessibility, Tastaturnav usw. testen. Die Style Override-Lösung scheint harmlos zu sein .
[Bearbeiten 2014/02/03]
Wordpress hat das in Version 3.8.1 (oder früher) behoben. Dieser Fix ist ein bisschen cool, negative Positionierung begone! Es wird durch clip: rect(0 0 0 0); border: 0;
ersetzt, was offensichtlich der jquery-ui Weg ist. Siehe Ссылка
Dieses Ding ist immer noch absolut positioniert, also sollte es in Ordnung sein, in meine oder Christos Lösung zu gehen.
Tags und Links javascript jquery jquery-ui