2011-11-21 19 views
311

Jak można zaznaczyć/odznaczyć pole wyboru przy użyciu JavaScript lub jQuery?Zaznacz/odznacz pole wyboru JavaScriptem?

+1

http://www.google.co.uk/search?q=javascript+html+element+checkbox – topherg

+1

możliwe duplikat [modyfikować checkbox za pomocą javascript] (http://stackoverflow.com/questions/4733114/modify-checkbox-using-javascript) – mauris

Odpowiedz

618

Javascript:

// Check 
document.getElementById("checkbox").checked = true; 

// Uncheck 
document.getElementById("checkbox").checked = false; 

jQuery (1.6 +):

// Check 
$("#checkbox").prop("checked", true); 

// Uncheck 
$("#checkbox").prop("checked", false); 

jQuery (1,5-):

// Check 
$("#checkbox").attr("checked", true); 

// Uncheck 
$("#checkbox").attr("checked", false); 
+0

Używanie .prop nie działa z Jquery 1.11.2 w Firefoksie z lokalnie hostowanymi plikami. .attr ma. Nie testowałem jeszcze pełniej. Oto kod: '' personContent.find ("[data-name = '" + pass.name + "']"). Children ('input'). Attr ('checked', true); '' '' –

+2

Czy raczej powinniśmy używać 'attr' lub' prop'? – Black

26

sprawdzić:

document.getElementById("id-of-checkbox").checked = true; 

odznaczyć:

document.getElementById("id-of-checkbox").checked = false; 
6

Możemy zaznaczone pole wyboru cząstek jako,

$('id of the checkbox')[0].checked = true 

i odznacz przez,

$('id of the checkbox')[0].checked = false 
+1

Naprawdę nie potrzebujesz indeksu tablicy, jeśli wybierasz tylko jeden element. Ale myślę, że jeśli chcesz być bezpośredni. haha – Rizowski

+4

@Rizowski Potrzebujesz indeksu do pobrania natywnego elementu html - obiekty jQuery nie mają "sprawdzonej" właściwości –

+0

Ale równie dobrze możemy po prostu używać jQuery w tym momencie – damd

69

Ważne zachowanie, które nie zostały jeszcze wymienione:

Programowo ustawiane atrybutynie wywołuje zdarzenia change pola wyboru.

Przekonaj się, w tym skrzypce:
http://jsfiddle.net/fjaeger/L9z9t04p/4/

(Fiddle przetestowane w Chrome 46, Firefox 41 i IE 11)

click() metoda

Pewnego dnia może się odnaleźć pisanie kodu, który polega na wywołanym zdarzeniu. Aby upewnić się, Zdarzenie, wywołać metodę click() elementu opcji, to tak:

document.getElementById('checkbox').click(); 

Jednak ta przełącza sprawdzenia statusu wyboru, zamiast konkretnie ustawienie go na true lub false. Pamiętaj, że zdarzenie change powinno być uruchamiane tylko wtedy, gdy zaznaczony atrybut faktycznie się zmienia.

Dotyczy to również sposobu jQuery: ustawienie atrybutu przy użyciu prop lub attr, nie ognia zdarzenie change.

Ustawianie checked do określonej wartości

Można przetestować atrybut checked, przed wywołaniem metody click().Przykład:

function toggle(checked) { 
    var elm = document.getElementById('checkbox'); 
    if (checked != elm.checked) { 
    elm.click(); 
    } 
} 

Czytaj więcej o metodzie kliknij tutaj:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

+4

To dobra odpowiedź, ale osobiście chciałbym wolą wywoływać zdarzenie change zamiast wywoływać click() 'elm.dispatchEvent (new Event ('change'));' –

+0

@VictorSharovatov Dlaczego wolisz wywołać zdarzenie change? – PeterCo

+0

Mogę się zgodzić tylko częściowo - wiele przeglądarek internetowych z AdBlockami broni DOM przed wirtualnym kliknięciem() z powodu niechcianych działań z reklam – pkolawa

5

Chciałbym zwrócić uwagę, że ustawienie „sprawdzony” atrybut niepusty ciąg prowadzi do zaznaczone pole.

Więc jeśli ustawisz „sprawdzony” atrybut „false”, to pole wyboru zostanie zaznaczone. Musiałem ustawić wartość na pusty ciąg, zerowy lub wartość logiczna fałszywe w celu upewnienia się, pole nie zostało zaznaczone.

+2

Dzieje się tak dlatego, że niepusty łańcuch jest uważany za prawdę. –

2
<script type="text/javascript"> 
    $(document).ready(function() { 
     $('.selecctall').click(function (event) { 
      if (this.checked) { 
       $('.checkbox1').each(function() { 
        this.checked = true; 
       }); 
      } else { 
       $('.checkbox1').each(function() { 
        this.checked = false; 
       }); 
      } 
     }); 

    }); 

</script> 
2

Spróbuj to:

//Check 
document.getElementById('checkbox').setAttribute('checked', 'checked'); 

//UnCheck 
document.getElementById('chk').removeAttribute('checked'); 
0
function setCheckboxValue(checkbox,value) { 
    if (checkbox.checked!=value) 
     checkbox.click(); 
}