From 1d322de67b1fb58638f3e8fcdd6369ed2682fc0c Mon Sep 17 00:00:00 2001 From: Petru Paler Date: Thu, 8 Jan 2026 09:17:56 +0000 Subject: [PATCH] Fix datetime picker on multi-form pages MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The event_datetime_field JavaScript used querySelector to find the ts_utc hidden input by name, which breaks when multiple forms have ts_utc fields (like feed give and purchase forms). Now each hidden field gets a unique ID based on the field_id parameter, and the JavaScript uses getElementById for correct scoping. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/animaltrack/web/templates/actions.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/animaltrack/web/templates/actions.py b/src/animaltrack/web/templates/actions.py index b2f276e..c3c63ab 100644 --- a/src/animaltrack/web/templates/actions.py +++ b/src/animaltrack/web/templates/actions.py @@ -47,6 +47,7 @@ def event_datetime_field( """ picker_id = f"{field_id}_picker" input_id = f"{field_id}_input" + ts_utc_id = f"{field_id}_ts_utc" # If initial value is set, start with picker expanded has_initial = bool(initial_value) @@ -57,7 +58,7 @@ def event_datetime_field( toggle_onclick = f""" var picker = document.getElementById('{picker_id}'); var input = document.getElementById('{input_id}'); - var tsField = document.querySelector('input[name="ts_utc"]'); + var tsField = document.getElementById('{ts_utc_id}'); if (picker.style.display === 'none') {{ picker.style.display = 'block'; this.textContent = 'Use current time'; @@ -70,14 +71,14 @@ def event_datetime_field( """ # Inline JavaScript for input change handler - input_onchange = """ - var tsField = document.querySelector('input[name="ts_utc"]'); - if (tsField && this.value) { + input_onchange = f""" + var tsField = document.getElementById('{ts_utc_id}'); + if (tsField && this.value) {{ var date = new Date(this.value); tsField.value = date.getTime().toString(); - } else if (tsField) { + }} else if (tsField) {{ tsField.value = '0'; - } + }} """ return Div( @@ -111,7 +112,7 @@ def event_datetime_field( ), cls="mt-1", ), - Hidden(name="ts_utc", value=initial_ts), + Hidden(id=ts_utc_id, name="ts_utc", value=initial_ts), cls="space-y-1", )