Вопрос по js, как лучше сделать?

ArbNet
На сайте с 27.10.2019
Offline
124
943

Сделал динамическую форму на js. После загрузки страницы скрипт ищет тег с атрибутом data-form затем вешает события на дочерние элементы с атрибутом data-name. При двойном клике на элементе с data-name включается редактирование записи элемента(имитация input), при нажатии на Esc, Enter(если указан data-exitkey="Enter") или клик мышки на странице происходит отмена редактирования и сравнение с старым значением и при не соответствии включается кнопка сохранения формы.

Так вот вопрос такой. Так конечно удобно для тех кто не умеет программировать, но думаю, что может сделать не навешиванием событий, а указанием их через ondblclick и onrecord(это событие у меня обрабатывается через модуль Observer). Далее при необходимости можно создавать разную разметку с редактированием нужных элементов и др. Если делать навешиванием, то для других разметок придётся писать код, а так только функции обработки. Хотя для некоторого функционала может удобнее сделать уже готовые скрипты, например для той же динамической формы, чтобы те кто не умеют программировать просто копировали разметку и у них всё работало, но и с указанием событий так же будет в принципе.

Вот и думаю как лучше сделать то?


Обсуждение разработки на моём фреймворке https://discord.gg/23N4s9x2kp
W1
На сайте с 22.01.2021
Offline
285
#1
ArbNet :
При двойном клике на элементе с data-name включается редактирование записи элемента(имитация input), при нажатии на Esc, Enter(если указан data-exitkey="Enter") или клик мышки на странице происходит отмена редактирования

Правильнее - вставлять кнопку "Редактировать".

Мой форум - https://webinfo.guru –Там я всегда на связи
ArbNet
На сайте с 27.10.2019
Offline
124
#2
webinfo #:

Правильнее - вставлять кнопку "Редактировать".

Я так делал по началу, создавал элемент input в его value значение записи и тд. коряво выглядит и глупо так делать если можно просто указать contentEditable="true". Сейчас в js возможностей достаточно чтобы сделать намного лучше, с кнопкой это по моему уже не актуально(прошлый век).

Или может я не правильно понял. Зачем вообще кнопка "Редактировать"? Да, если одно поле это в принципе приемлемо, но если таблица, у каждого значения кнопку, нафига..

W1
На сайте с 22.01.2021
Offline
285
#3
ArbNet #:
Зачем вообще кнопка "Редактировать"?

Так нагляднее, ИМХО. И это не обязательно огромная кнопка, можно маленькую иконку ставить.

ArbNet #:
но если таблица, у каждого значения кнопку, нафига.

В таблице - не надо, там просто инпуты редактируемые. Это если текст. А если картинка - то кнопочки типа "удалить", "заменить", "вставить".

ArbNet #:
Сейчас в js возможностей достаточно

Да я не против JS. Одно другому не мешает.

ArbNet
На сайте с 27.10.2019
Offline
124
#4
webinfo #:

Так нагляднее, ИМХО. И это не обязательно огромная кнопка, можно маленькую иконку ставить.

Ну это не ответ на мой вопрос: навешивать события скриптом или делать прописыванием их в элементе через атрибуты on*

Это украшение так сказать, удобство интерфейса, при наведении мышкой на элемент который имеет возможность редактирования, например можно менять цвет фона, границы, показывать подсказку и тд.

W1
На сайте с 22.01.2021
Offline
285
#5
ArbNet #:
навешивать события скриптом или делать прописыванием их в элементе через атрибуты on*

Пофиг. Но лично я предпочитаю по возможности не писать ничего лишнего в разметке, особенно для множества однотипных элементов.

ArbNet
На сайте с 27.10.2019
Offline
124
#6
webinfo #:

Пофиг. Но лично я предпочитаю по возможности не писать ничего лишнего в разметке, особенно для множества однотипных элементов.

Как для программиста это да, пофиг, можно как угодно сделать, главное чтобы работало.

Я же хочу чтобы и не программисты могли без знаний JS легко создавать разные динамические формы обрабатываемые скриптом и тд. Короче решил через события делать, разработчику не трудно прописать атрибут события, а пользователю без знаний JS надо просто скопировать готовую разметку и всё, так будет удобно для всех ИМХО

Snake800
На сайте с 02.02.2011
Offline
215
#7
ArbNet :
может сделать не навешиванием событий, а указанием их через ondblclick и onrecord

Не. Лучше через data-, кмк. Вернее так: событие должен ловить некий css-селектор (в т.ч. через data-*). А что делать с этим элементом, сотдержится в дата-атрибутах. Я так делаю. Правда я в js далеко не гуру и, возможно, вообще правильнее dom- элементы заворачивать в какую-то js-обёртку.

ArbNet
На сайте с 27.10.2019
Offline
124
#8
Snake800 #:

Не. Лучше через data-, кмк. Вернее так: событие должен ловить некий css-селектор (в т.ч. через data-*). А что делать с этим элементом, сотдержится в дата-атрибутах. Я так делаю. Правда я в js далеко не гуру и, возможно, вообще правильнее dom- элементы заворачивать в какую-то js-обёртку.

Я пару лет назад тоже так рассуждал и даже делал обработчики навешивая на элементы где data-do="указание какого-то действия" функций обработчиков тех или иных действий. Потом стал писать разные модули и придумывание разных функций каждый раз для каки-то действий это только хуже и навешивание событий это только дополнительная путаница и тд. В html предусмотрены атрибуты для обработки событий onclik и др. on* к тому же есть возможность создания своих событий через MutationObserver, создав модуль для обработки событий наблюдений за элементами просто прописываешь как обычно своё событие on*** с указанием функции обработки и всё. А для ускорения разработки в других модулях подготавливаешь функции для изменения, работы с элементами и др. указывая которые в обработчиках событий, так намного понятнее и проще.

W1
На сайте с 22.01.2021
Offline
285
#9
Snake800 #:
Лучше через data-, кмк. Вернее так: событие должен ловить некий css-селектор (в т.ч. через data-*).

Лично я предпочитаю употреблять атрибуты "по назначению". То есть события назначать через классы, а через  data передавать данные (к примеру, через data-id - идентификатор объекта, через data-color - цвет, и т.п.).

N4
На сайте с 19.09.2008
Offline
264
#10
ArbNet #:

Я же хочу чтобы и не программисты могли без знаний JS легко создавать разные динамические формы обрабатываемые скриптом и тд. 

Для этого есть множество фреймворков, например antd, mui из наиболее крупных 

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий