Come deselezionare la casella di controllo utilizzando la libreria uniforme di jQuery


144

Ho un problema con deselezionando a checkbox. Dai un'occhiata al mio jsFiddle , dove sto provando:

   $("#check2").attr("checked", true);

Uso l' uniforme per lo styling di checkboxe semplicemente non funziona per selezionare / deselezionare il checkbox.

Qualche idea?


sia in Google Chrome che Firefox non funziona per me
— Upvote

Risposte:


108

Guardando i loro documenti, hanno una $.uniform.updatefunzione per aggiornare un elemento "uniforme".

Esempio: http://jsfiddle.net/r87NH/4/

$("input:checkbox").uniform();

$("body").on("click", "#check1", function () {
    var two = $("#check2").attr("checked", this.checked);
    $.uniform.update(two);
});

5
@mkoryak: funziona perfettamente 1.4.4, ma i collegamenti ai file js e css sono stati interrotti. Ecco un violino aggiornato. Se intendi che avrà problemi specifici in 1.6, allora probabilmente è vero dal momento che jQuery ha cambiato il comportamento di .attr(). Utilizzando 1.6o superiore, dovresti davvero usare .prop().
— user113716

Non vedo assolutamente alcuna differenza tra jsFiddle aggiornato e l'originale (fino all'etichetta errata della casella di controllo 2), tranne per il fatto che la versione aggiornata funziona per me e l'originale no!?!?
— iPadDeveloper2011

A proposito, tutte queste forme uniformi disegnate a pixel sembrano molto poco sexy su Retina.
— incarnato il

non ha funzionato per me anche jsfiddle non funziona o è confuso
— matthy

367

Una soluzione più semplice è fare questo invece di usare l'uniforme:

$('#check1').prop('checked', true); // will check the checkbox with id check1
$('#check1').prop('checked', false); // will uncheck the checkbox with id check1

Ciò non attiverà alcuna azione di clic definita.

Puoi anche usare:

$('#check1').click(); // 

Questo attiva / disattiva il segno di spunta per la casella, ma attiverà anche qualsiasi azione clic definita. Perciò stai attento.

MODIFICA : jQuery 1.6+ prop()non utilizza il attr()valore selezionato per le caselle di controllo


2
Questo lascia l'attributo controllato così com'è in jQuery 1.7.1 per me. Funziona ma non fa quello che pensi che dovrebbe.
— 2

24
$("#chkBox").attr('checked', false); 

Questo ha funzionato per me, deselezionerà la casella di controllo. Allo stesso modo possiamo usare

$("#chkBox").attr('checked', true); 

per selezionare la casella.


4
Penso che sia meglio usare la funzione .prop () invece di .attr (). Altrimenti non funzionerà sempre come previsto ...
— Simon Steinberger,

13

Se stai usando l' uniforme 1.5, usa questo semplice trucco per aggiungere o rimuovere l'attributo di check
Aggiungi semplicemente value = "check" nel campo di input della tua casella.
Aggiungere questo codice in uniform.js> function doCheckbox(elem){>.click(function(){

if ( $(elem+':checked').val() == 'check' ) {
    $(elem).attr('checked','checked');           
}
else {
    $(elem).removeAttr('checked');
}   

se non desideri aggiungere value = "check" nella casella di input perché in alcuni casi aggiungi due caselle di controllo, utilizza questa opzione

if ($(elem).is(':checked')) {
 $(elem).attr('checked','checked');
}    
else
{    
 $(elem).removeAttr('checked');
}

Se stai usando l' uniforme 2.0, usa questo semplice trucco per aggiungere o rimuovere l'attributo di check
in questo classUpdateChecked($tag, $el, options) {cambio di funzione

if ($el.prop) {
    // jQuery 1.6+
    $el.prop(c, isChecked);
}

Per

if ($el.prop) {
    // jQuery 1.6+
    $el.prop(c, isChecked);
    if (isChecked) {
        $el.attr(c, c);
    } else {
        $el.removeAttr(c);
    }

}

7
$('#check1').prop('checked', true).uniform(); 
$('#check1').prop('checked', false).uniform(); 

Questo ha funzionato per me.


Grazie mille. Posso confermare che questa è la soluzione più semplice.
— Rudolph Opperman,

2

Basta fare questo:

$('#checkbox').prop('checked',true).uniform('refresh');

1

è necessario chiamare $.uniform.update()se si aggiorna l'elemento usando JavaScript come indicato nella documentazione.


1

Prima di tutto, checkedpuò avere un valore checkedo una stringa vuota.

$("input:checkbox").uniform();

$('#check1').live('click', function() {
    $('#check2').attr('checked', 'checked').uniform();
});

Non c'è niente di sbagliato nel passare un valore booleano come valore di checked.
— user113716,

Ma non stiamo scrivendo markup HTML. Stiamo impostando una proprietà su HTMLInputElement. Dai un'occhiata alla checkedproprietà.
— user113716,

Non importa ... Non capisco davvero perché non sia valido, neanche ...
— nyuszika7h,

il passaggio di un valore booleano è supportato solo in 1.6+, prima di dover impostare l'attributo controllato su "controllato" o rimuoverlo.
— mkoryak,

1

In alcuni casi è possibile utilizzare questo:

$('.myInput').get(0).checked = true

Per attivare / disattivare è possibile utilizzare se altro con la funzione


1

 $("#checkall").change(function () {
            var checked = $(this).is(':checked');
            if (checked) {
                $(".custom-checkbox").each(function () {
                    $(this).prop("checked", true).uniform();
                });
            } else {
                $(".custom-checkbox").each(function () {
                    $(this).prop("checked", false).uniform();
                });
            }
        });

        // Changing state of CheckAll custom-checkbox
        $(".custom-checkbox").click(function () {
            if ($(".custom-checkbox").length == $(".custom-checkbox:checked").length) {
                $("#chk-all").prop("checked", true).uniform();
            } else {
                $("#chk-all").removeAttr("checked").uniform();
            }
        });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" id='checkall' /> Select All<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="PHP"> PHP<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="AngularJS"> AngularJS<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="Python"> Python<br/>
 <input type="checkbox" class='custom-checkbox' name="languages" value="Java"> Java<br/>


0

L'altro modo di fare è,

uso $('#check2').click();

questo fa sì che l'uniforme controlli la casella e aggiorni le sue maschere


-1

casella di controllo che si comporta come radio btn

$(".checkgroup").live('change',function() { var previous=this.checked; $(".checkgroup).attr("checked", false); $(this).attr("checked", previous); });

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.