За последние 24 часа нас посетили 17382 программиста и 1605 роботов. Сейчас ищут 909 программистов ...

Checkbox с тремя состояниями ( как в Access)

Тема в разделе "Решения, алгоритмы", создана пользователем Slavka, 4 апр 2014.

  1. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    При переписывании одной поисковой формы была необходимость сделать флажок с тремя состояниями :
    1. Вкл
    2. Выкл
    3. пофик вкл или выкл.

    убив большую часть дня - вот что получилось
    на одном из сайтов нашел и немного модифицировал вот такой скрипт
    Код (Text):
    1.  
    2. <input id="test1" type="checkbox" name="test1" checked />
    3. <script type="text/javascript">
    4. var $check = $("input[type=checkbox]"), el;
    5. $check
    6.    .data('checked',0)
    7.    .prop('indeterminate',true)
    8.    .val('int')
    9.    .click(function(e) {
    10.  
    11.         el = $(this);
    12.  
    13.         switch(el.data('checked')) {
    14.  
    15.             // Неопределённое состояние, переходим в отмеченное
    16.             case 0:
    17.                 el.data('checked',2);
    18.                 el.prop('indeterminate',false);
    19.                 el.prop('checked',true);
    20.                 el.val('on');
    21.                 break;
    22.                
    23.             // Неотмеченное состояние, переходим в неопределённое
    24.             case 1:
    25.                 el.data('checked',0);
    26.                 el.prop('indeterminate',true);
    27.                 el.val('int');
    28.                 break;
    29.  
    30.             // Отмеченное состояние, переходим в неопределенное
    31.             default:
    32.                 el.data('checked',1);
    33.                 el.prop('indeterminate',false);
    34.                 el.prop('checked',false);
    35.         }
    36.     });
    и вот так все это обрабатывается в php
    Код (PHP):
    1.     switch ($_GET['test1']) {
    2.         case 'on' : echo "Флажок включен"; break;
    3.         case 'int': echo "Неопределено"; break;
    4.         default : echo "Флажок отключен";
    5.     }
    PS : Практическое применение если вдруг кто не понял : Имеется база с булевым полем - скажем инвентаризация
    в поиске необходимо найти где происходила инвентаризация ( on), где ее не было ( default) или выбрать все значения - была ли инвентаризация или нет.

    если http://phpfiddle.org/ заработает постараюсь выложить пример.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    слово 'int' для значения "неопределено" это тоже от Попова или сам придумал? помоему напрашивается 'on'|'off'|'undefined'
     
  3. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    не поверишь .. производным было indeterminate.. просто под конец рабочего дня устал и как то руки автоматом в тестовом примере набрали int

    Добавлено спустя 13 минут 45 секунд:
    ах да - кто такой попов о котором тут все говорят ? я по php.net учусь - по справке .. не спорю иногда - криво выходит .. а данные скрипты сможешь модифицировать лучше ? или какой-нить свой пример дать ..
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    твоя первая ссылка это Попов
     
  5. Slavka

    Slavka Активный пользователь

    С нами с:
    1 окт 2013
    Сообщения:
    722
    Симпатии:
    41
    аа .. буду знать =) я обычно гуглю в нужном направлении - а потом уже выбираю что больше подходит =)
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Пациент вменяем. Есть перспективы. Жму руку. Обычно почти все неофиты PHP сегодня учатся программированию на ютубе... Документация непосильна для них.
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    документация php.net это просто чудо какое-то. зайдёшь на мускульный хелп и сразу дурно делается.