Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   как правильно динамически добавить элемент в конкретное поле? (https://javascript.ru/forum/project/77448-kak-pravilno-dinamicheski-dobavit-ehlement-v-konkretnoe-pole.html)

yurii_Kh 06.05.2019 14:56

как правильно динамически добавить элемент в конкретное поле?
 
https://jsfiddle.net/w9zdt2f4/2/
https://jsfiddle.net/w9zdt2f4/2/#&togetherjs=428qJwcF6z

вот код. нужно по клику на день открывать блок с полями для ввода, вносить данные и по клику на кнопку добавить - переносить их в соответствующий день.
сейчас открывает блок с формами но после клика на сгенерированом блоке пишет ошибку - Failed to execute 'appendChild' on 'Node': The new child element contains the parent.
прошу помощи, как правильно это реализовать.

рони 06.05.2019 15:38

yurii_Kh,
calendar.onclick = function(event) {
    var target = event.target;
    while (target != this) {
        if (target.classList.contains('calendar-day')) {
            highlight(target);
            target.appendChild(div);
            break;
        }
        target = target.parentNode;
    }
};

yurii_Kh 06.05.2019 15:51

подскажите, почему теперь в input пропадает курсор?

рони 06.05.2019 16:31

Цитата:

Сообщение от yurii_Kh
почему теперь в input пропадает курсор?

потому что, все клики делают одно и тоже, вставляют div, и происходит потеря фокуса.

yurii_Kh 06.05.2019 17:14

как тогда лучше реализовать добавление заметок в календарь? в html сделать div с input'ами и открывать/скрывать по клику? но как их привязать к дню по которому кликнул?

рони 06.05.2019 17:43

yurii_Kh,
алгоритмов можно придумать много ...
calendar.onclick = function(event) {
    var target = event.target;
    while (target != this) {
        if (target.classList.contains('calendar-day')) {
            highlight(target);
            target.appendChild(div);
            break;
        }
        if (target.classList.contains('add-event-wrap')) {
            break;
        }
        target = target.parentNode;
    }
};

рони 06.05.2019 17:46

Цитата:

Сообщение от yurii_Kh
но как их привязать к дню по которому кликнул?

var current;
calendar.onclick = function(event) {
    var target = event.target;
    while (target != this) {
        if (target.classList.contains('calendar-day')) {
            current = target;
            //open div
            break;
        }
        target = target.parentNode;
    }
};

yurii_Kh 06.05.2019 18:12

Благодарю

Haanis 08.05.2019 10:20

Спасибо за ответы. Сам сталкивался с похожей проблемой


Часовой пояс GMT +3, время: 05:35.