I’m now in the realm of the supernatural at this stage. I copied the WP-produced web page for this problem page and made a one-page website out of it, coping the assets it needs, and just changing the paths to the assets. That page successfully prevents form submission with invalid fields. I use TextWrangler to compare the HTML of the one-page site and my WP problem page, and the only difference are the paths to the assets. Neither one generates any errors in the webkit debugger. Yet one works, and one doesn’t.
I now believe in evil magic.