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

23 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: feedback-no-inline-js
description: Никогда не писать inline JS-атрибуты (onchange/onclick/...) в HTML — только jQuery через .on()
metadata:
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` инлайном для
переключения панели/вкладок, самодостаточности ради) — при следующей правке этого файла стоит переписать
на тот же паттерн, если пользователь укажет, что это тоже нужно поправить (сейчас не просил явно).