2013-11-21 2 views
1

У меня есть 4 кнопки в этом коде. При выборе кнопки «все» я хотел бы, чтобы остальные 3 кнопки снимали и обновляли. Вот что у меня есть:Как снять и обновить данные с помощью флажка jQuery

$('div.regions').find('input:checked').each(function() { 
    var id = this.id; 
    var now = moment(); 
    if (id == "ALL") 
    { 
     if (item.Date >= now){ data.push(item); } 

    } 
    else if (id == item.Region) 
    { 
     if (item.Date >= now){ data.push(item); } 
    } 
}); 

Вот является jsfiddle кода: http://jsfiddle.net/ZHvYH/ Может кто-нибудь помочь?

+0

Что вы имеете в виду с обновлением? И где ваша попытка снять отметку? – putvande

+0

При обновлении я хочу вернуть пользовательский интерфейс кнопки в его состояние без контроля. Я пробовал $ ('#SCV') .prop ("checked", false) .checkboxradio ("refresh"); и $ ('. SCV'). prop ('checked', false); без успеха. – Bacon2305

ответ

3

Обновленный JSFiddle - http://jsfiddle.net/ZHvYH/5/

var checkboxes = $('div.regions input[type="checkbox"]:not([id="ALL"])'); 

$('div.regions input[type="checkbox"]').on({ 
    'change': function(){ 
     var checkbox = $(this); 

     if(checkbox.attr('id') == 'ALL'){ 
      checkboxes.prop('checked',checkbox.prop('checked')).checkboxradio('refresh'); 
     } 
     else { 
      $('#ALL').prop('checked',(checkboxes.length == $('div.regions input[type="checkbox"]:checked:not([id="ALL"])').length)).checkboxradio('refresh'); 
     } 
    } 
}); 
+0

Это решение гарантирует, что, когда каждая опция будет «проверена», опция ALL также будет автоматически проверена. +1 – crenckly

+0

Да, вы правы. Я ценю тщательность! – Bacon2305

+0

Если я хочу снять отметку со всех категорий, как только была выбрана другая кнопка, как это сделать? – Bacon2305

0
if (id == "ALL") 
    { 
     if (item.Date >= now){ data.push(item); } 
    $('input[type=checkbox]').each(function() { 
     this.checked ? this.attr('checked', false) : null ; 
    }); 

    } 

Возможно, вам нужна небольшая настройка. Я не тестировал, я записываю, как я себе представлял.

надеюсь, что это помогает ..

+0

Благодарим за отзыв. К сожалению, он не работал в jsfiddle. – Bacon2305

1

При проверке #ALL, удалите атрибут checked от всех остальных флажков, а затем обновить их.

var checkboxes = $('div.regions input[type="checkbox"]:not([id="ALL"])'); 

$('#ALL').on({ 
    'click': function(){ 
     if (this.checked) { 
      checkboxes.removeAttr('checked').checkboxradio("refresh"); 
     } 
    } 
}); 

http://jsfiddle.net/ZHvYH/6/

+0

ummmm Я не думаю, что ваша скрипка работает (я использую хром) , И вы не учитываете их снятие, если все нажато снова. http://jsfiddle.net/ZHvYH/12/ – crenckly

+0

Когда установлен флажок «ALL», другие снимите флажок. Это буквально задает весь вопрос. – MattDiamant

+0

Спасибо! Работает очень хорошо! Теперь, если я хочу отключить кнопку «все», как только будет выбрана другая кнопка, как это будет сделано? Благодаря! – Bacon2305

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