2016-05-10 2 views
2

Я думал, что это должно быть легко. Здесь есть много ответов о снятии флажков с помощью jQuery, но когда я их пытаюсь, они, похоже, не работают. Я хочу отключить их как часть моей функции для сброса формы.jQuery - Снимите флажки с полями

У меня есть цикл, и я создаю флажки внутри него: <input type="checkbox" name="is_chosen[]" value="{{ $sample->id }}" class="flat">

Вот мой код для убрав галочки (не все Флажки проверялись):

$('input:checkbox').each(function() { 
    if(this.checked) { 
    $(this).attr('checked', false); 
    } 
}); 

Я также попытался заменить attr с prop. Я также попытался использовать только $(input:checkbox).prop('checked', false);. Я пробовал другие, но они не работают. Что мне не хватает?

+0

Он должен '$ (ввод: флажок) .prop ('checked', false);'. Если он не работает, проверьте, что выбирает '$ (input: checkbox)'. – dfsq

+0

[demo] (https: // jsfiddle.net/Lk12nvjz /) проверьте демо-версию, она работает – guradio

+0

[Нажмите здесь] (http://stackoverflow.com/questions/17915065/javascript-check-uncheck-checkboxes-based-on-id) Надеюсь, это поможет :) – Mir

ответ

0

Прошу прощения за неудобства.

Я узнал, что проблема была class="flat" (из Bootstrap), хотя я не знаю, почему именно. Я стал беспокоиться, потому что ни один из ваших ответов не работал. Затем я подумал о том, чтобы удалить класс. Когда класс был там, все проверенные флажки по-прежнему проверялись после выполнения функции. Когда я удалял класс, флажки не были отмечены после выполнения функции. Я снова попробовал свои ответы, и они работали. Я пробовал код, который я разместил, и это сработало. Так что это был класс.

3

Это делает работу: https://jsfiddle.net/bfqew4du/

setInterval(function(){ 
    $('input:checkbox').each(function() { 
    $(this).attr('checked', !this.checked); 
    }); 
},1000); 

Убедитесь, что вы работаете в JavaScript после того, как DOM нагрузок.

+1

Loop здесь не требуется, поскольку это может быть выполнено с помощью $ (": checked"). Attr ('checked', false); –

+0

Петля или нет вряд ли проблема, хотя @ArunSharma. Это ответило на вопрос. – Mackan

+0

@Mackan Это не только ответ на вопрос. Ваш код должен быть чистым, понятным и точным. setInterval и .each - бесполезные куски кода здесь. –

9

Вам не нужно использовать each(). Вы можете сделать это следующим образом.

$('input:checkbox:checked').prop('checked', false); 
+1

с использованием функции .attr() не работал для меня, но функция .prop() – ShaneMit

2

Вам не нужно цикла, это может быть достигнуто с помощью одной строки кода: Использование $(":checked").attr('checked', false);

$(document).ready(function(){ 
 
    $(":checked").attr('checked', false); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="checkbox" checked="checked"> 
 
<input type="checkbox" checked="checked"> 
 
<input type="checkbox"> 
 
<input type="checkbox">

0

Это хорошая идея, чтобы применить уникальный класса для динамических элементов, чтобы все они могли быть выбраны с использованием этого имени класса. Таким образом, при создании вы можете добавить флажок с именем класса

...append('<input type="checkbox" name="is_chosen[]" value="1" class="flat dynmc-check">'); 

затем использовать этот класс dynmc-check для выбора этих флажков:

$('.dynmc-check') 

Используя этот селектор вы выполните необходимые действия, например, сбросить флажок:

$('.dynmc-check').removeAttr('checked'); 

или считать проверенные из них:

var checkCount = $('.dynmc-check:checked').length; 

См this working fiddle для деталей.

Смежные вопросы