A Melbourne afternoon with a form that submitted itself
The museum shop in Carlton did not come to us with a theory. They came with a page that felt heavy after a gift-wrap option was added, and with one report from a volunteer who said the cart had posted while she was still typing a message.
We sat on William Street with that page, the cart drawer, and the shared header. The change listener on the message field fired on every keystroke. On a build that still had an experimental “save as I type” behaviour, one of those fires posted the cart. The volunteer’s afternoon was not a ghost. It was a listener doing what it had been asked, on a field nobody had treated as a submit control.
The quieter finding was the header. It attached a scroll listener each time someone opened the shop and did not remove it when the drawer closed. That did not post the cart. It did make the page feel thick, which was the complaint that brought them in. Both facts went on the map. Only one had submitted the form. Both were listener activity. Mixing them in conversation without the map is how a sitting turns into a quarrel about “performance.”