• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Zmiana koloru labelu dla checkboxa po kliknięciu w niego.

0 głosów
2,310 wizyt
pytanie zadane 31 marca 2020 w HTML i CSS przez halotelefonek Bywalec (2,410 p.)
Witam, Mam wydawałoby się proste pytanie ale jeszcze tego nie robiłem i mam problem.

Chciałbym żeby przed kliknięciem w checkboxa jego label był clasy "alert alert-secondary"  (szary w bootstrapie)

a po kliknięciu był clasy "alert alert-danger" (czerwony)

mogłaby być również zmiana koloru w css po kliknięciu  na czerwony a po odznaczeniu na szary,

ale najlepiej gdyby było to na bootstrapowych alertach.

Z góry dziękuję za wszelką pomoc :)

2 odpowiedzi

+1 głos
odpowiedź 31 marca 2020 przez frostify Mądrala (5,640 p.)

Jeżeli input i label znajdują się wewnątrz tego samego elementu (są jego dziećmi), najpierw input później label to spróbuj dodać ten kod:

input[type=checkbox]:checked + label {
  style css
  } 

Oczywiście w miejsce input[type=checkbox] możesz wpisać tylko samo id swojego inputa, a w miejsce label może być tylko jego klasa.

Wtedy, gdy checkbox będzie zaznaczony, wczytają się podane wewnątrz style.

Możesz więc ręcznie ustawić jakie chcesz style.

Gdybyś chciał by dodawało klasę do labela po zaznaczeniu checkboxa, trzeba by było użyć js-a.

Ale łatwiej zrobić to po prostu w css.

Gdybyś szukał, tu są style z bootstrap dla alert-danger:

    color: #721c24;
    background-color: #f8d7da;
    border-color: #f5c6cb;
komentarz 31 marca 2020 przez halotelefonek Bywalec (2,410 p.)
Dzięki, zaraz to wypróbuję :)
komentarz 31 marca 2020 przez halotelefonek Bywalec (2,410 p.)

Zrobiłem coś takiego narazie bez bootstrapa i nie działa

<html>

<head>

<meta http-equiv="Content-type" content="text/html;charset=ISO-8859-2">

<title>Tytuł Strony WWW</title>

        <style type="text/css">

        input[type=checkbox]:checked + label 
        {
            color: #721c24;
            background-color: #f8d7da;
            border-color: #f5c6cb;
        } 

        </style>
</head>

<body>

<form>
<label>Pozycja1: <input type="checkbox" name="platnosc" value="gotowka" /></label> 
<label>Pozycja2: <input type="checkbox" name="platnosc" value="karta" /></label>
</form>



</body>
</html>
komentarz 31 marca 2020 przez frostify Mądrala (5,640 p.)

Napisałem "najpierw input później label", a ty wstawiłeś input wewnątrz labela :)

Poprawiłem twój kod i działa:

https://codepen.io/frostify/pen/poJYwYx

komentarz 1 kwietnia 2020 przez halotelefonek Bywalec (2,410 p.)
Wielkie dzięki :)
0 głosów
odpowiedź 31 marca 2020 przez pablop76 VIP (123,640 p.)
1. Pobierasz inputy typu checkbox oraz labelki

2. Robisz pętle po inputach i nasłuchujesz zdarzenia input

3. Jeżeli zachodzi input to odpalasz funkcje przełączającą klasę.

Funkcja robi pętle po labelkach i porównuje jej for el.getAttribute("for") z id kliniętego inputa (e.target.id). Jeżeli się zgadza to zmienia klasę el.classList.toggle()

Podobne pytania

0 głosów
1 odpowiedź 868 wizyt
pytanie zadane 8 marca 2020 w JavaScript przez eMe Początkujący (340 p.)
0 głosów
0 odpowiedzi 3,408 wizyt
pytanie zadane 4 lipca 2019 w JavaScript przez Ebay_05 Początkujący (400 p.)
0 głosów
2 odpowiedzi 1,117 wizyt
pytanie zadane 27 listopada 2018 w HTML i CSS przez YakumoPL Obywatel (1,970 p.)

93,720 zapytań

142,640 odpowiedzi

323,264 komentarzy

63,268 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...