@TechNOIR

Javascript. Как вернуть несколько значений через запятую?

Добрый день. Здесь мое демо календаря на DHTLMX.
Смысл в том что при создании события на календаре я хочу кликать по чекбоксам в разделе username нажимать Save и они должны заменять стандартных текст New Event. Выглядеть должно так. Мы создаем,выбираем допустим Kate,Mary, сохраняем и текст New Event заменяется на "Kate,Mary".
Но в данном развитии событий в моем демо текст заменяется если только выбран ктото один. Допусти Kate, а когда несколько - не заменяется...
Подскажите пожалуйста где может быть ошибка? Спасибо
  • Вопрос задан
  • 687 просмотров
Пригласить эксперта
Ответы на вопрос 2
@Coder321
scheduler.attachEvent("onEventSave",function(id,ev,is_new){
    const keys = ev.username.split(',');
    const selectedUsers = users.filter(user => keys.includes(user.key)).map(user => user.label);
    ev.text = selectedUsers.join(',');
    return true;
})
Ответ написан
Комментировать
@alexalexes
scheduler.attachEvent("onEventSave",function(id,ev,is_new)
{    
  var checked_users = ev.username.split(','); // переводим строку в список отмеченных id пользователей
  var new_text = ''; // сюда будем писать строку с именами пользователей
  var checked_users_count = checked_users.length; // кол-во отмеченных пользователей
  for (var i = 0; i < checked_users_count; i++)
  {
    var check_user_id = checked_users[i]; // текущий отмеченный id
    var ch_users = users.filter(usr => usr.key == check_user_id); // получаем человека из списка users по отмеченному id (на выходе тоже список, но не более 1 элемента)
    if (ch_users.length > 0)
      new_text += (new_text != '' ? ', ' : '') + ch_users[0].label; // вписываем в строку найденного пользователя
  }
  ev.text = new_text == '' ? 'Nobody' : new_text; // если никого не нашли, то как-то обозначаем эту ситуацию (Nobody)
  return true;
})
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы