2014-12-17 4 views
1

У меня есть некоторые флажки, которые отображаются путем выбора в базе данных, представляющей таблицы ресторана. Те таблицы, которые уже зарезервированы, добавляют к ним отключенный атрибут. Проблема с моим скриптом заключается в том, что я хочу только выбрать три таблицы max, и это означает, что мне нужно добавить отключенный атрибут к другому, чтобы заблокировать их. и когда я хочу отменить выбор уже выбранных 3, мне нужно удалить отключенный атрибут. Проблема в том, что он удаляет атрибут из всех таблиц, даже тех, которые зарезервированы и выбраны из базы данных.Флажки отключены с jquery, которые не работают по назначению

Вот мой сценарий:
JSFIDDLE HERE

<script type="text/javascript"> 
     var $checks = $(".table").change(function() { 
     if ($checks.filter(":checked").length<3) 
     { 
     $(".formular").toggle($checks.filter(":checked").length>0); 
     $checks.not(":checked").removeAttr("disabled"); 
     } 
     else 
     { 
     $checks.not(":checked").attr("disabled", "disabled"); 
     } 

    }); 

    </script> 
+0

Не могли бы вы добавить HTML слишком –

+0

воспроизведенный в jsfiddle http://jsfiddle.net/hM8kP/7/. Я не знаю, как сделать, чтобы не удалять отключенные из тех, которые отключены от начала. – user3058067

+3

Добавьте класс к тому, что происходит из базы данных, и пропустите все проверки и проигнорируйте это, если они получены из базы данных. – vaso123

ответ

0

Добавлен класс .ignore на вход отключен от начала и в JS связывания события изменения только флажков без класса игнорируемых как уже упоминалось @lolka_bolka

HTML

<input type="checkbox" class="bowling ignore" disabled/> 
<input type="checkbox" class="bowling ignore" disabled/> 
<input type="checkbox" class="bowling"/> 
<input type="checkbox" class="bowling"/> 

JS

var $checks = $(".bowling:not(.ignore)").change(function() { 
    if ($checks.filter(":checked").length < 3) { 
     $(".formular").toggle($checks.filter(":checked").length > 0); 
     $checks.not(":checked").removeAttr("disabled"); 
    } else { 
     $checks.not(":checked").attr("disabled", "disabled"); 
    } 

}); 

: нет (Foo) {} будет соответствовать все, что не Foo, включая HTML и тела. Source

Demo

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