Як зняти прапорець за допомогою бібліотеки jQuery Uniform


144

У мене проблема з видаленням параметра a checkbox. Подивіться на мій jsFiddle , де я роблю спроби:

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

Я використовую форму для стилізації checkboxі він просто не працює , щоб перевірити / зніміть прапорецьcheckbox .

Будь-які ідеї?


і в google chrome, і в firefox для мене це не працює
— Upvote

Відповіді:


108

Дивлячись на свої документи, у них є $.uniform.updateможливість оновити "формений" елемент.

Приклад: 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: Добре працює 1.4.4, але посилання на файли js та css були порушені. Ось оновлена ​​загадка. Якщо ви маєте на увазі, що у нього будуть проблеми конкретно 1.6, то це, мабуть, правда, оскільки jQuery змінився, а потім відвернув поведінку .attr(). Використовуючи 1.6або вище, ви дійсно повинні користуватися .prop().
— користувач113716

Я бачу абсолютно ніякої різниці між оновленим jsFiddle та оригіналом (аж до неправильної позначки прапорця 2), за винятком того, що оновлена ​​версія для мене працює, а оригінал не став!?!?
— iPadDeveloper2011

До речі, всі ці форми, намальовані пікселями, виглядають на сітківці дуже несексуально .
— втілився

не працював для мене також jsfiddle не працює або плутає
— матір

367

Більш просте рішення - це зробити, а не використовувати єдину форму:

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

Це не призведе до жодної визначеної дії клацання.

Ви також можете використовувати:

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

Це переключить прапорець / зніміть прапорець, але це також спровокує будь-яку дію кліку, яку ви визначили. Тож будьте обережні.

EDIT : jQuery 1.6+ використовує prop()не attr()для встановлення прапорців встановлене значення


2
Це залишає перевірений атрибут як є в jQuery 1.7.1 для мене. Працює, але не робить те, що, на вашу думку, повинно.
— 2rs2ts

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

Це працювало для мене, це зніме прапорець. Таким же чином ми можемо використовувати

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

щоб встановити прапорець.


4
Я думаю, що краще використовувати функцію .prop () замість .attr (). Інакше це буде працювати не завжди так, як очікувалося ...
— Саймон Штейнбергер,

13

Якщо ви використовуєте рівномірний 1.5, використовуйте цей простий трюк, щоб додати або видалити атрибут чека.
Просто додайте значення = "перевірити" у полі введення вашого прапорця.
Додайте цей код в uniform.js> function doCheckbox(elem){>.click(function(){

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

якщо ви не хочете додавати value = "check" у поле введення, оскільки в деяких випадках ви додаєте два прапорці, тому використовуйте це

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

Якщо ви використовуєте єдиний 2.0, використовуйте цей простий трюк, щоб додати або видалити атрибут перевірки
в цій classUpdateChecked($tag, $el, options) {функції зміни

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

До

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(); 

Це працювало для мене.


Велике спасибі. Я можу підтвердити, що це найпростіше рішення.
— Рудольф Опперман


1

Вам потрібно зателефонувати, $.uniform.update()якщо ви оновлюєте елемент за допомогою javascript, як зазначено в документації.


1

Перш за все, checkedможе мати значення checkedабо порожній рядок.

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

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

Немає нічого поганого в передачі булевого значення як значення checked.
— користувач113716

Але ми не пишемо розмітку HTML. Ми встановлюємо властивість на HTMLInputElement. Подивіться на checkedвласність.
— користувач113716

Не забувайте… Я теж не розумію, чому він недійсний…
— nyuszika7h

передача булевого значення підтримується лише у версії 1.6+, перед цим вам довелося встановити перевірений атрибут на "перевірено" або видалити його.
— mkoryak

1

У деяких випадках ви можете використовувати це:

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

Для перемикання ви можете використовувати якщо не функцію


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

Інший спосіб - це

використання $('#check2').click();

це змушує рівномірно встановити прапорець і оновити його маски


-1

прапорець, який діє як радіо btn

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.