Czasami używam kotwic w stylu przycisków, a czasami po prostu używam przycisków. Chcę wyłączyć określone klikalne elementy, aby:
- Wyglądają na wyłączone
- Przestają być klikane
W jaki sposób mogę to zrobić?
jquery
html
css
twitter-bootstrap
biofraktal
źródło
źródło
role="button"
linków, ale nie wydaje się, aby miało to wpływ na ten problem. getbootstrap.com/css/#buttonsa.btn[disabled]
wyłączeniu, ale pozostaniu klikalnym, jest to błąd w IMO Bootstrap. Atrybut[disabled]
powinien wyglądać na wyłączony tylko dlabutton
iinput
.Odpowiedzi:
guziki
Przyciski można łatwo wyłączyć, podobnie jak
disabled
właściwość przycisku obsługiwana przez przeglądarkę:Aby je wyłączyć za pomocą niestandardowej funkcji jQuery, wystarczy skorzystać z
fn.extend()
:JSFiddle wyłączony przycisk i wejście demo .
W przeciwnym razie skorzystasz z
prop()
metody jQuery :Tagi kotwiczne
Warto zauważyć, że
disabled
nie jest to poprawna właściwość tagów zakotwiczenia. Z tego powodu Bootstrap używa następującej stylizacji na swoich.btn
elementach:Zwróć uwagę, w jaki sposób
[disabled]
właściwość jest kierowana, a także.disabled
klasa..disabled
Klasa to, co jest potrzebne, aby znacznik kotwica pojawiają wyłączone.Oczywiście nie uniemożliwi to działania linków po kliknięciu. Powyższy link przeniesie nas na http://example.com . Aby temu zapobiec, możemy dodać prosty fragment kodu jQuery, aby kierować tagi zakotwiczenia za pomocą
disabled
klasy do wywołaniaevent.preventDefault()
:Możemy przełączać
disabled
klasę za pomocątoggleClass()
:Demo JDLiddle wyłączone łącze .
Łączny
Następnie możemy rozszerzyć poprzednią funkcję wyłączania wykonaną powyżej, aby sprawdzić typ elementu, którego próbujemy wyłączyć
is()
. W ten sposób możemytoggleClass()
, jeśli nie jest toinput
czybutton
element lub przełączyćdisabled
nieruchomości jeśli jest to:W pełni połączone demo JSFiddle .
Warto ponadto zauważyć, że powyższa funkcja będzie działać również na wszystkich typach wejść.
źródło
return false if $(@).prop('disabled')
niestandardowych modułów obsługi kliknięć? Bez tego wiersza programy obsługi są uruchamiane niezależnie.disabled
nie jest prawidłową właściwością tagu kotwicy, więc nie należy jej używać. Zdarzenie click Dałem bazuje na.disabled
klasie, ale to, co można wykorzystać tohasClass('disabled')
- jeśli to prawda,preventDefault
.disabled
właściwości na kotwicy. Jest to obiekt dynamiczny, więc mogę go po prostu ustawić i używać, tak jak rozbudowałem zestaw funkcji kotwicy? Zaktualizowałem moją odpowiedź poniżej, aby to pokazać. Co myślisz? Czy to jest złe? Czy musisz.off()
takżepreventDefault
kliknąć zdarzenie po ponownym włączeniu łącza?disabled
właściwość niestandardową , możesz skorzystać zdata-*
atrybutów . Ponieważ Bootstrap już stosuje te samedisabled
style właściwości,class="disabled"
możesz również polegać na klasie.preventDefault
do wszystkich zdarzeń kliknięcia kotwicy, będę musiał je odłączyć po ponownym włączeniu linku. A może coś źle zrozumiałem?Nie mogę wymyślić prostszego / łatwiejszego sposobu! ;-)
Używanie tagów zakotwiczenia (łącza):
Aby włączyć tag zakotwiczenia:
Aby wyłączyć tag Anchor:
źródło
Załóżmy, że masz pole tekstowe i przycisk Prześlij,
Wyłączanie:
Aby wyłączyć dowolny przycisk, na przykład przycisk Prześlij, wystarczy dodać atrybut disabled jako,
Po wykonaniu powyższej linii znacznik HTML przycisku wysyłania wygląda następująco:
Zauważ, że dodano atrybut „wyłączony” .
Włączanie:
Do włączania przycisku, na przykład gdy masz tekst w polu tekstowym. Musisz usunąć atrybut wyłączania, aby włączyć przycisk jako,
Teraz powyższy kod usunie atrybut „disabled”.
źródło
Wiem, że jestem spóźniony na przyjęcie, ale konkretnie odpowiadam na dwa pytania:
„Chcę tylko wyłączyć określone klikalne elementy, aby:
Jak trudne to może być? ”
Przestają klikać
1. Do przycisków podoba
<button>
lub<input type="button">
dodać atrybut:disabled
.2. W przypadku linków, DOWOLNY link ... właściwie, dowolnego elementu HTML, można użyć zdarzeń wskaźnika CSS3 .
Obsługa przeglądarek dla zdarzeń wskaźnikowych jest niesamowita, jak na dzisiejszy stan techniki (5/12/14). Ale zwykle musimy obsługiwać starsze przeglądarki w dziedzinie IE, więc IE10 i poniżej NIE obsługują zdarzeń wskaźnika: http://caniuse.com/pointer-events . Tak więc korzystanie z jednego z rozwiązań JavaScript wspomnianych przez innych tutaj może być sposobem na przejście do starszych przeglądarek.
Więcej informacji o zdarzeniach wskaźnika:
Wyglądają na wyłączone
Oczywiście jest to odpowiedź CSS, więc:
1. W przypadku przycisków takich jak
<button>
lub<input type="button">
użyj[attribute]
wybieraka:-
Oto podstawowe demo z materiałami, o których tu wspomniałem: http://jsfiddle.net/bXm5B/4/
Mam nadzieję że to pomoże.
źródło
Jeśli, podobnie jak ja, chcesz po prostu wyłączyć przycisk, nie przegap prostej odpowiedzi subtelnie ukrytej w tym długim wątku:
źródło
@James Donnelly udzielił wyczerpującej odpowiedzi, która polega na rozszerzeniu jQuery o nową funkcję. To świetny pomysł, więc zamierzam dostosować jego kod, aby działał tak, jak powinienem.
Rozszerzanie jQuery
Stosowanie
Kod przetworzy pojedynczy element lub listę elementów.
Przyciski i dane wejściowe obsługują
disabled
właściwość, a jeśli ustawione natrue
, będą wyglądać na wyłączone (dzięki bootstrap) i nie będą uruchamiane po kliknięciu.Kotwice nie obsługują właściwości disabled, więc zamiast tego będziemy polegać na
.disabled
klasie, która sprawi, że będą wyglądać na wyłączone (dzięki bootstrapowi ponownie) i podłączą domyślne zdarzenie click, które zapobiega kliknięciu, zwracając wartość false (nie trzeba tutajpreventDefault
widzieć ) .Uwaga : Nie trzeba odczepiać tego zdarzenia podczas ponownego włączania kotwic. Wystarczy usunąć
.disabled
klasę.Oczywiście nie pomaga to, jeśli do linku dołączono niestandardową procedurę obsługi kliknięć, co jest bardzo częste podczas korzystania z bootstrap i jQuery. Aby sobie z tym poradzić, użyjemy
isDisabled()
rozszerzenia, aby przetestować.disabled
klasę:Mam nadzieję, że trochę to uprości.
źródło
Zauważ, że istnieje dziwny problem, jeśli używasz przycisków JS Bootstrap i stanu „ładowania”. Nie wiem, dlaczego tak się dzieje, ale oto jak to naprawić.
Załóżmy, że masz przycisk i ustawiłeś go na stan ładowania:
Teraz chcesz usunąć go ze stanu ładowania, ale także go wyłączyć (np. Przycisk był przyciskiem Zapisz, stan ładowania wskazywał na ciągłą weryfikację, a weryfikacja nie powiodła się). Wygląda to na rozsądny Bootstrap JS:
Niestety zresetuje to przycisk, ale go nie wyłączy. Najwyraźniej
button()
wykonuje jakieś opóźnione zadanie. Będziesz musiał także odłożyć wyłączenie:Trochę denerwujące, ale często używam tego wzoru.
źródło
Świetna odpowiedź i wkład wszystkich! Musiałem nieco rozszerzyć tę funkcję, aby uwzględnić wyłączenie wybranych elementów:
Wygląda na to, że dla mnie pracuje. Dziękuje wszystkim!
źródło
Do tego rodzaju zachowania zawsze używam
button
widżetu jQueryUI , używam go do linków i przycisków.Zdefiniuj tag w HTML:
Użyj jQuery, aby zainicjować przyciski:
Użyj
button
metod widgetów, aby je wyłączyć / włączyć:To zajmie się zachowaniem przycisku i kursora, ale jeśli musisz wejść głębiej i zmienić styl przycisku, gdy jest wyłączony, zastąp następujące klasy CSS w pliku CSS strony.
Pamiętaj jednak: te klasy CSS (jeśli zostaną zmienione) zmienią styl również dla innych widżetów.
źródło
Poniższe działało dla mnie bardzo dobrze:
źródło
To dość późna odpowiedź, ale natknąłem się na to pytanie, szukając sposobu na wyłączenie przycisków boostrap po kliknięciu i może dodać ładny efekt (np. Pokrętło). Znalazłem świetną bibliotekę, która dokładnie to robi:
http://msurguy.github.io/ladda-bootstrap/
Wystarczy dołączyć wymagane css i js, dodać niektóre właściwości do przycisków i włączyć lada z javascript ... Presto! Twoje przyciski mają nowe życie (sprawdź wersję demonstracyjną, aby zobaczyć, jak pięknie jest)!
źródło
Powyższe nie działa, ponieważ czasami
dostosuj swój kod za pomocą
źródło
Wiem, że moja odpowiedź jest spóźniona, ale IMO to najprostszy sposób na przełączenie przycisku „włącz” i przycisku „wyłącz”
źródło
Załóżmy, że masz na stronie następujące przyciski:
Kod js:
źródło
Załóżmy, że masz taki wygląd, który jest obecnie włączony.
Po prostu dodaj to:
i dostaniesz to, co wyłączy przycisk
źródło
disabled
właściwość nie jest prawidłową właściwością dla tagów zakotwiczenia.Jeśli chcesz wyłączyć klikalne, możesz również dodać to w wierszu w HTML
źródło