Manchmal verwende ich Anker, die als Knöpfe gestaltet sind, und manchmal benutze ich nur Knöpfe. Ich möchte bestimmte Clicky-Dinge deaktivieren, damit:
- Sie sehen behindert aus
- Sie werden nicht mehr angeklickt
Wie kann ich das machen?
jquery
html
css
twitter-bootstrap
Biofractal
quelle
quelle
role="button"
für Links angegeben, dies scheint jedoch keinen Einfluss auf dieses Problem zu haben. getbootstrap.com/css/#buttonsa.btn[disabled]
klickbare erscheinen deaktiviert noch bleiben ist ein Fehler in Bootstrap IMO. Das Attribut[disabled]
sollte nur fürbutton
und deaktiviert erscheineninput
.Antworten:
Tasten
Schaltflächen sind einfach zu deaktivieren, ebenso
disabled
wie eine Schaltflächeneigenschaft, die vom Browser verarbeitet wird:Um diese mit einer benutzerdefinierten jQuery-Funktion zu deaktivieren, verwenden Sie einfach Folgendes
fn.extend()
:JSFiddle deaktiviert Schaltfläche und Eingabe Demo .
Andernfalls würden Sie die
prop()
Methode von jQuery verwenden:Anker-Tags
Es ist erwähnenswert, dass dies
disabled
keine gültige Eigenschaft für Ankertags ist. Aus diesem Grund verwendet Bootstrap das folgende Styling für seine.btn
Elemente:Beachten Sie, wie die
[disabled]
Eigenschaft sowie eine.disabled
Klasse als Ziel ausgewählt werden. Die.disabled
Klasse ist erforderlich, damit ein Ankertag deaktiviert erscheint.Dies verhindert natürlich nicht, dass Links funktionieren, wenn Sie darauf klicken. Der obige Link führt uns zu http://example.com . Um dies zu verhindern, können wir einen einfachen Teil des jQuery-Codes hinzufügen, um Ankertags mit der
disabled
aufzurufenden Klasse anzuvisierenevent.preventDefault()
:Wir können die
disabled
Klasse umschalten , indem wir Folgendes verwendentoggleClass()
:JSFiddle deaktivierte Link-Demo .
Kombiniert
Wir können dann die oben beschriebene vorherige Deaktivierungsfunktion erweitern, um den Elementtyp zu überprüfen, mit dem wir die Deaktivierung versuchen
is()
. Auf diese Weise können wir,toggleClass()
wenn es sich nicht um eininput
oderbutton
-Element handelt, diedisabled
Eigenschaft umschalten, wenn es sich um Folgendes handelt:Vollständige kombinierte JSFiddle-Demo .
Es ist weiter zu beachten, dass die obige Funktion auch für alle Eingabetypen funktioniert.
quelle
return false if $(@).prop('disabled')
die benutzerdefinierten Klick-Handler behalte ? Ohne diese Zeile werden diese Handler unabhängig davon ausgeführt.disabled
keine gültige Ankertag- Eigenschaft, daher sollte diese nicht verwendet werden. Das Klickereignis, das ich gegeben habe, basiert auf der.disabled
Klasse, aber was Sie verwenden können, isthasClass('disabled')
- wenn das wahr ist ,preventDefault
.disabled
Eigenschaft für den Anker nicht erstellen und verwenden ? Es ist ein dynamisches Objekt, also kann ich es einfach festlegen und verwenden, als hätte ich den Funktionsumfang des Ankers erweitert? Ich habe meine Antwort unten aktualisiert, um dies zu zeigen. Was denken Sie? Ist es böse? Müssen Sie auch auf.off()
daspreventDefault
Klickereignis klicken, wenn Sie einen Link wieder aktivieren?disabled
Eigenschaft wünschen , können Siedata-*
Attribute verwenden . Da Bootstrap bereits dieselbendisabled
Eigenschaftsstile aufclass="disabled"
Sie anwendet , können Sie sich stattdessen auch auf die Klasse verlassen.preventDefault
mit allen Ankerklickereignissen verbinde, diese trennen muss, wenn der Link wieder aktiviert wird. Oder verstehe ich etwas falsch?Ich kann mir keinen einfacheren Weg vorstellen! ;-);
Verwenden von Anker-Tags (Links):
So aktivieren Sie das Anchor-Tag:
So deaktivieren Sie das Anchor-Tag:
quelle
Angenommen, Sie haben ein Textfeld und eine Schaltfläche zum Senden.
Deaktivieren:
Um eine Schaltfläche zu deaktivieren, z. B. die Schaltfläche "Senden", müssen Sie nur das deaktivierte Attribut hinzufügen als:
Nach dem Ausführen der obigen Zeile würde Ihr HTML-Tag für die Schaltfläche "Senden" folgendermaßen aussehen:
Beachten Sie, dass das Attribut 'disabled' hinzugefügt wurde .
Aktivieren:
Zum Aktivieren der Schaltfläche, z. B. wenn sich Text im Textfeld befindet. Sie müssen das Deaktivierungsattribut entfernen , um die Schaltfläche als zu aktivieren.
Jetzt entfernt der obige Code das Attribut 'disabled'.
quelle
Ich weiß, dass ich zu spät zur Party komme, aber um die beiden Fragen speziell zu beantworten:
"Ich möchte nur bestimmte Clicky-Dinge deaktivieren, damit:
Wie schwer kann das sein? "
Sie hören auf zu klicken
1. Für Schaltflächen wie
<button>
oder<input type="button">
fügen Sie das Attribut hinzu :disabled
.2. Für Links, JEDEN Link ... eigentlich können Sie für jedes HTML-Element CSS3- Zeigerereignisse verwenden .
Die Browserunterstützung für Zeigerereignisse ist nach dem heutigen Stand der Technik (12.05.14) fantastisch. Normalerweise müssen wir jedoch ältere Browser im IE-Bereich unterstützen, sodass IE10 und darunter KEINE Zeigerereignisse unterstützen: http://caniuse.com/pointer-events . Die Verwendung einer der von anderen hier erwähnten JavaScript-Lösungen ist möglicherweise der richtige Weg für ältere Browser.
Weitere Informationen zu Zeigerereignissen:
Sie sehen behindert aus
Offensichtlich ist dies eine CSS-Antwort, also:
1. Für Schaltflächen wie
<button>
oder<input type="button">
verwenden Sie den[attribute]
Selektor:- -
Hier ist eine grundlegende Demo mit den Dingen, die ich hier erwähnt habe: http://jsfiddle.net/bXm5B/4/
Hoffe das hilft.
quelle
Wenn Sie wie ich nur eine Schaltfläche deaktivieren möchten, verpassen Sie nicht die einfache Antwort, die in diesem langen Thread subtil verborgen ist:
quelle
@James Donnelly hat eine umfassende Antwort geliefert, die darauf beruht, jQuery um eine neue Funktion zu erweitern. Das ist eine großartige Idee, also werde ich seinen Code so anpassen, dass er so funktioniert, wie ich es brauche.
JQuery erweitern
Verwendungszweck
Der Code verarbeitet ein einzelnes Element oder eine Liste von Elementen.
Schaltflächen und Eingaben unterstützen die
disabled
Eigenschaft. Wenntrue
diese Option aktiviert ist , sehen sie (dank Bootstrap) deaktiviert aus und werden beim Klicken nicht ausgelöst.Anchors unterstützen nicht die Eigenschaft disabled so stattdessen wir uns auf die verlassen werden
.disabled
Klasse sie deaktiviert (dank Bootstrap wieder) und Haken ein Standard - Klick - Ereignis aussehen zu lassen , dass der Klick verhindert durch falsche Rückkehr (nicht nötigpreventDefault
siehe hier ) .Hinweis : Sie müssen dieses Ereignis nicht aushaken, wenn Sie Anker wieder aktivieren. Das einfache Entfernen der
.disabled
Klasse reicht aus.Dies hilft natürlich nicht, wenn Sie einen benutzerdefinierten Klick-Handler an den Link angehängt haben, was bei der Verwendung von Bootstrap und jQuery sehr häufig vorkommt. Um damit fertig zu werden, werden wir die
isDisabled()
Erweiterung verwenden, um für die.disabled
Klasse zu testen , wie folgt:Ich hoffe, das hilft, die Dinge ein bisschen zu vereinfachen.
quelle
Beachten Sie, dass es ein seltsames Problem gibt, wenn Sie die JS-Schaltflächen von Bootstrap und den Ladezustand verwenden. Ich weiß nicht, warum dies passiert, aber hier erfahren Sie, wie Sie es beheben können.
Angenommen, Sie haben eine Schaltfläche und setzen sie in den Ladezustand:
Jetzt möchten Sie es aus dem Ladezustand entfernen, aber auch deaktivieren (z. B. war die Schaltfläche eine Schaltfläche Speichern, der Ladezustand zeigte eine laufende Validierung an und die Validierung schlug fehl). Dies sieht nach vernünftigem Bootstrap JS aus:
Leider wird dadurch die Schaltfläche zurückgesetzt, aber nicht deaktiviert. Führt anscheinend
button()
eine verzögerte Aufgabe aus. Sie müssen also auch Ihre Deaktivierung verschieben:Ein bisschen nervig, aber es ist ein Muster, das ich oft benutze.
quelle
Tolle Antwort und Beiträge von allen! Ich musste diese Funktion leicht erweitern, um das Deaktivieren ausgewählter Elemente einzuschließen:
Scheint für mich zu arbeiten. Vielen Dank an alle!
quelle
Für diese Art von Verhalten verwende ich immer das jQueryUI-
button
Widget, ich verwende es für Links und Schaltflächen.Definieren Sie das Tag in HTML:
Verwenden Sie jQuery, um die Schaltflächen zu initialisieren:
Verwenden Sie die
button
Widget-Methoden, um sie zu deaktivieren / aktivieren:Dadurch wird das Verhalten von Schaltflächen und Cursoren behoben. Wenn Sie jedoch bei Deaktivierung tiefer gehen und den Schaltflächenstil ändern müssen, überschreiben Sie die folgenden CSS-Klassen in der CSS-Stildatei Ihrer Seite.
Aber denken Sie daran: Diese CSS-Klassen (falls geändert) ändern den Stil auch für andere Widgets.
quelle
Folgendes hat bei mir sehr gut funktioniert:
quelle
Dies ist eine ziemlich späte Antwort, aber ich bin auf diese Frage gestoßen, als ich nach einer Möglichkeit gesucht habe, Boostrap-Schaltflächen nach dem Klicken zu deaktivieren und möglicherweise einen schönen Effekt hinzuzufügen (z. B. einen Spinner). Ich habe eine großartige Bibliothek gefunden, die genau das tut:
http://msurguy.github.io/ladda-bootstrap/
Sie fügen nur die erforderlichen CSS und JS hinzu, fügen Ihren Schaltflächen einige Eigenschaften hinzu und aktivieren Lada mit Javascript ... Presto! Ihre Schaltflächen haben ein neues Leben (bitte sehen Sie in der Demo nach, wie schön sie ist)!
quelle
Das oben funktioniert da manchmal nicht
Passen Sie Ihren Code mit an
quelle
Ich weiß, dass meine Antwort zu spät ist, aber IMO ist dies der einfachste Weg, um die Schaltflächen "Aktivieren" und "Deaktivieren" umzuschalten.
quelle
Angenommen, Sie haben diese Schaltflächen auf einer Seite wie:
Der js-Code:
quelle
Angenommen, Sie haben Folgendes, das derzeit aktiviert ist.
Fügen Sie einfach Folgendes hinzu:
und Sie erhalten dies, wodurch die Schaltfläche deaktiviert wird
quelle
disabled
Eigenschaft ist keine gültige Eigenschaft für Ankertags.Wenn Sie das anklickbare Element deaktivieren möchten, können Sie dies auch in HTML inline hinzufügen
quelle