Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 08.06.2011, 16:34
Новичок на форуме
Отправить личное сообщение для flatliner Посмотреть профиль Найти все сообщения от flatliner
 
Регистрация: 08.06.2011
Сообщений: 4

jsTree + checkbox
Добрый день. Кто-нибудь использует jsTree с плагином checkbox, там опция real_checkboxes вообще работает или нет?

Я вот так задал конфигурацию:
function init() {
  $("#categories_tree").jstree({
    "core": {"initially_open": [1]},
    "plugins": ["themes", "json_data", "checkbox"],
    "json_data": {
      "data": [{
         "data": "Categories",
         "attr": {"id": 1},
         "state": "closed"
      }],
      "ajax": {
        "url": "ajax_categories",
        "data": function (n) {
          return {"id": n.attr ? n.attr("id") : -1}
        }
      }
    },
    "themes": {
      "theme": "classic"
    },
    "checkbox": {
        "real_checkboxes": true
    }
  });
}


Дерево рисуется, но в $_POST ничего не приходит, да и через firebug видно, что для чекбоксов используются тэги <ins>
Я что-то не так делаю или эта фича еще не реализована в плагине?
Спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 17.06.2011, 15:47
Новичок на форуме
Отправить личное сообщение для flatliner Посмотреть профиль Найти все сообщения от flatliner
 
Регистрация: 08.06.2011
Сообщений: 4

С этой проблемой разобрался. Помог следующий код:
$("#form").submit(function () {   
    $("#categories_tree").jstree("get_checked").each(function() {
      var checkedId = this.id;
      $("#form").append('<input name="categories[]" value="'+checkedId+'" type="hidden">');
    });
  });

Но выползла другая проблема. Надо, чтобы, по мере выбора пунктов в категориях менялась аяксом отображаемая информация на сайте (список сущностей). Я это решил с помощью такого:
function init() {
  $("#categories_tree").bind("change_state.jstree", function (event, data) {
    getData();
  }).jstree({
    "core": {"initially_open": [1]},
    "plugins": ["themes", "json_data", "checkbox"],
    "json_data": {
      "data": [{
         "data": "Categories",
         "attr": {"id": 1},
         "state": "closed"
      }],
      "ajax": {
        "url": "main/ajax_categories",
        "data": function (n) {
          return {"id": n.attr ? n.attr("id") : -1}
        }
      }
    },
    "themes": {
      "theme": "classic"
    }
  });
}

function getData(page) {
    var catIds = '';
    $("#categories_tree").jstree("get_checked").each(function() {
      catIds += this.id+',';
    });
    $.get(
        'main/ajax',
        {
            page: page,
            catids: catIds
        },
        showData
    );
}

Все хорошо, однако, возникает один ньюанс. В дереве категорий могут быть заведомо чекнутые пункты, при первой загрузке страницы они игнорируются (вероятно, дерево jstree еще не успевает полностью загрузиться). Как повесить колбэк на событие полной загрузки дерева?
Пробовал на loaded.jstree вешать - оно срабатывает при каждом раскрытии ветки (когда идет ajax-подгрузка данных), но, вероятно, до того, как данные будут загружены, потому что опять же чекнутые пункты не отлавливаются
Помогите пожалуйста разобраться с проблемой.
Ответить с цитированием
  #3 (permalink)  
Старый 20.06.2011, 11:42
Новичок на форуме
Отправить личное сообщение для flatliner Посмотреть профиль Найти все сообщения от flatliner
 
Регистрация: 08.06.2011
Сообщений: 4

Неужели ж никто не решал подобных задач тут?
Ответить с цитированием
  #4 (permalink)  
Старый 20.06.2011, 12:02
Новичок на форуме
Отправить личное сообщение для flatliner Посмотреть профиль Найти все сообщения от flatliner
 
Регистрация: 08.06.2011
Сообщений: 4

Решил пока проблему с помощью setTimeout выставив 5 секунд на раздупление дерева... но понимаю, что такое решение некузявое
Ответить с цитированием
  #5 (permalink)  
Старый 31.07.2011, 15:54
Новичок на форуме
Отправить личное сообщение для DareDevil Посмотреть профиль Найти все сообщения от DareDevil
 
Регистрация: 31.07.2011
Сообщений: 1

Jstree + real_checkboxes_names + Opera ?
Доброго времени суток!
Недавно стал работать с с jstree, хорошая штука. После написания проекта и тестирования пришел к такому неочень приятному моменту:

"real_checkboxes_names" :function (n) { return (["id[]", n[0].id]) }




Не работает в Opera, всегда значение n[0].id возвращает undefinded, тогда как в IE 6 и выше - работает без нареканий.


Собственно встал вопрос: как лечить и кто-то сталкивался с такой болезнью?


Заранее спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
спрятать/показать поле ввода при нажатии на checkbox g1r Элементы интерфейса 34 16.12.2017 00:34
Згачения выделенных checkbox vova_b jQuery 22 24.12.2013 20:52
Свой стиль для CheckBox vah-smile Элементы интерфейса 7 23.06.2011 18:34
Функция disable для нескольких checkbox allforweb Элементы интерфейса 4 19.12.2010 17:51
как посчитать сумму выбранных элементов checkbox nikimak92 Общие вопросы Javascript 9 01.06.2010 10:16