ЙажаСценарий / Говнокод #2405 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
$('#state_checkboxes input[type=checkbox]').each(function(i) {
    $(this).click(function() {
        if (!$(this).attr('checked')) {
            if ($('#state_checkboxes input[type=checkbox]:checked').length == 0) {
                $('#state_checkboxes input[type=checkbox]').not(this).attr('checked', 'checked');
            }
        }
    });
});

$('#type_checkboxes input[type=checkbox]').each(function(i) {
    $(this).click(function() {
        if (!$(this).attr('checked')) {
            if ($('#type_checkboxes input[type=checkbox]:checked').length == 0) {
                $('#type_checkboxes input[type=checkbox]').not(this).attr('checked', 'checked');
            }
        }
    });
});

$('#own_checkboxes input[type=checkbox]').each(function(i) {
    $(this).click(function() {
        if (!$(this).attr('checked')) {
            if ($('#own_checkboxes input[type=checkbox]:checked').length == 0) {
                $('#own_checkboxes input[type=checkbox]').not(this).attr('checked', 'checked');
            }
        }
    });
});

Только что наговнокодил, еще тепленькое.
Суть в следующем: есть несколько пар чекбоксов, в каждой из этих пар обязательно должен быть выделен хотя бы один. Если снимаем выделение со всех чекбоксов в паре, то установиться выделение должно у другого чекбокса.
В данном говнокоде 3 пары чекбоксов, у меня в проекте их будет больше, вот сижу и думаю, как бы это всё покрасивее сделать, а то совсем уже

Запостил: striker striker, (Updated )

Комментарии (20) RSS

  • есть еще идея сделать говнофункцию и повесить её на onclick, типа
    <input type="checkbox" id="checkbox1" onclick="checkCheckboxes('checkbox1', 'checkbox2');" />
    <input type="checkbox" id="checkbox2" onclick="checkCheckboxes('checkbox2', 'checkbox1');" />


    Еще идеи?
    Ответить
      • получится, только тогда придется делать три радиобаттона, вместо двух чекбоксов. Улавливаете? 🙂
        Ответить
        • Зато юзер не будет путаться. Тёма бы за такие изобретения тебя избил бы фалоимитатором и был бы прав. Делай радиобатонами.
          Ответить
          • тема не пуп земли
            хотя иногда выдает вменяемую идею
            Ответить
          • а чоб юзер путался? там по логике как бы получается всё ясненько. Хотя Тёма бы не оценил, это правда
            Ответить
        • пора в хтмл вводить радиочекбокс... чтобы можно было отмечать несколько, но убрать со всех отметки не давало бы... надо в в3ц послать просьбу пускай в стандарт добавлють 🙂
          Ответить
  • А не является-ли использование onclick деянием, наказумым отрыванием конечностей?
    Ответить
  • $('.group').each(function() {
        var chkboxes = $(':checkbox', this).click(function() {
            // правильно расставить галочки в коллекции chkboxes
        })
    })

    Где .group - контейнер для взаимосвязанных чекбоксов, а также используется замыкание для их хранения в chkboxes.
    Ответить
    • Прошу Вас, не используйте выборку по классу без указания тега.
      Ответить
      • why not?
        с указанием тега лучше будет работать? почему?
        Ответить
        • Быстрее. Сначала выберутся все тэги, потом в них будет искаться указанный класс. В противном случае будет искаться по всему коду. И хтмл, и боди, и мета... Ну вы поняли.
          Ответить
      • Код показывает лишь принцип работы. Но если так уж сильно волнует производительность, то лучше вообще использовать конструкцию $('#id').children().
        Ответить
    • Спасибо!
      $('div.group_checkboxes').each(function() {
                  var chkboxes = $(':checkbox', this).click(function () {
                      if (!$(this).attr('checked') && chkboxes.filter(':checked').length == 0) {
                          chkboxes.not(this).attr('checked', 'checked');
                      }
                  });
              });
      Ответить
      • Правда он тогда выделяет все чекбоксы, кроме последнего выделенного. Но это уже лечится легко
        Ответить

Добавить комментарий

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8