Bicycle/.claude/memory/feedback_no_inline_js.md
Egor Isaev 9e20ae6c5f dev
2026-08-07 14:01:09 +03:00

2.0 KiB
Raw Blame History

name description metadata
feedback-no-inline-js Никогда не писать inline JS-атрибуты (onchange/onclick/...) в HTML — только jQuery через .on()
type
feedback

Пользователь прямо запретил inline JS-обработчики в HTML (onchange="this.form.submit()" и подобные) — даже для мелочи вроде автосабмита <select> при смене значения.

Why: Явно сказал «никогда не пиши onchange="this.form.submit() такое в html» и прислал пример из своего другого проекта — везде используется jQuery с делегированием событий через .on() на контейнер ($('#content').on('click', '#selector', fn)), а не атрибуты onXxx= в разметке.

How to apply: Для любого интерактивного поведения (submit по смене select, клики, любые обработчики) писать JS в отдельном файле (App/media/js/*.js, подключается через $this->setScript('name.js') — см. System\Classes\View), с jQuery-биндингом $(function () { $(container).on(event, selector, handler); }). Никаких onclick=/onchange=/onsubmit= и т.п. атрибутов в .html-шаблонах — даже одна строчка.

Это касается и уже написанного System\Classes\ProfilerToolbar (там сейчас onclick инлайном для переключения панели/вкладок, самодостаточности ради) — при следующей правке этого файла стоит переписать на тот же паттерн, если пользователь укажет, что это тоже нужно поправить (сейчас не просил явно).