Direct answer: of the 15 product-entry pages in the study-4 sample, 13 were fetched reliably; six contain a textarea form and they carry 62 visible controls. 11 have an associated label (17.7%), 36 rely on a placeholder (58.1%), none is required, nine use autocomplete (all on P15) and none uses email/tel types. Across homepages, contact pages and product pages: only 38 of 222 controls have an associated label (17.1%).
This study parses control attributes only; it does not execute JavaScript, submit forms or measure screen readers or mobile keyboards.
Method: product entry pages with the same control rule
On 2026-11-08 between 21:41 and 21:42 we re-requested the 15 product-entry URLs from study 4 and kept the 13 that returned 200 reliably; every non-hidden/submit/button/reset/image control (including select/textarea) was counted. Only for/id, a wrapping label, aria-label/labelledby and title count as a label.
| Item | Rule | Boundary |
|---|---|---|
| Product sample | 13 of 15 P ids fetched | Failures are not counted as zero |
| Enquiry form | form containing a textarea | Search/newsletter boxes excluded |
| Associated label | for/id, wrapping label, aria, title | Table text and proximity excluded |
| type / autocomplete | Literal attribute values | Keyboard and autofill not tested |
Result: 62 controls, 11 labelled
| Item | Controls | Share of 62 |
|---|---|---|
| Associated label | 11 | 17.7% |
| Placeholder only | 36 | 58.1% |
| Required | 0 | 0% |
| Autocomplete | 9 | 14.5% |
| type=email / tel | 0 / 0 | 0% |
Controls cluster on a few pages: P02 has 25, P13 11 and P15 nine, while most others have 0–5. Of the 11 labelled controls, P02 contributes seven and P03 four. All nine autocomplete attributes sit in one form on P15.
Three-page matrix: 222 controls, 38 labelled
| Measure | Homepage (25) | Contact (9) | Product (13) | Total |
|---|---|---|---|---|
| Visible controls | 70 | 90 | 62 | 222 |
| Associated label | 14 | 13 | 11 | 38 (17.1%) |
| Placeholder only | 32 | 56 | 36 | 124 (55.9%) |
| Required | 0 | 0 | 0 | 0 |
| Autocomplete | 2 | 13 | 9 | 24 (10.8%) |
| type=email / tel | 0 | 0 | 0 | 0 |
The three page types agree on two points: no control is required and none uses email/tel types. They differ on labels and autofill: product pages label 17.7%, between homepages at 20.0% and contact pages at 14.4%; autocomplete appears on only three sites (E08, E19, P15), so it is a per-site setting rather than a template default.
What this means for acceptance
- Put labels into product-page acceptance too. Only 11 of 62 controls have an associated label and 58.1% rely on placeholders.
- Add types and autocomplete. Across three page types there are no email/tel types and autocomplete covers only 10.8%; mobile keyboards and autofill cannot help.
- Do not judge required from the front end alone. None of the 222 controls is required; constraints may live in the back end or JavaScript.
- Fix it at template level. Missing labels and types repeat on homepages, contact pages and product pages, which points to templates rather than single pages.
- Use one acceptance sheet for all three page types. Record controls, labels, type and autocomplete with the same rule instead of checking only the homepage. See the website development service.
Limits
- 13 of 15 pages: two product pages were not fetched reliably and are excluded, not counted as zero.
- HTML only: no JavaScript execution, no form submission, no screen-reader or mobile-keyboard test.
- Label rule is finite: table text, visual proximity and complex aria combinations are not counted.
- Different page sets: 25 homepages, nine contact pages and 13 product pages, with overlapping but not identical sites; the comparison is side by side only.
- Pilot: the same equipment-company sample; no industry claim.
Data and reproduction
Anonymised data: equipment-product-form-controls-2026.csv (13 rows × 13 columns: status, forms, controls, labels, placeholder-only, required, autocomplete, type, time). The repository keeps docs/research/2026-11-product-form-controls.csv.
Parser: scripts/form_label_probe.py (including inputs()); unit tests: scripts/test_content_form_inputs.py (4) and scripts/test_content_form_labels.py (7, both offline). Run:
python -m unittest scripts.test_content_form_inputs scripts.test_content_form_labels
Related: the homepage form-input pilot, the contact-page enquiry-form pilot, and the product entry-page AI-readability pilot.
Sources and definitions
- Sample: product entry pages P01–P15 from study 4; 13 fetched this run.
- Fetch: 2026-11-08 21:41–21:42 Asia/Shanghai, serial, 0.5 s apart, 15-second timeout.
- Controls: input/select/textarea excluding hidden/submit/button/reset/image.
- Label: for/id, wrapping label, aria-label/labelledby, title; nothing else counts.
Frequently asked questions
Why only 13 product pages?
The study-4 product-entry sample has 15 P ids; 13 were fetched reliably this time and the other two were excluded rather than counted as zero controls.
Does zero required mean no validation?
No. required is only a client-side constraint; none appeared on the 13 pages, and validation may be server-side or JavaScript.
Why only nine autocomplete attributes?
All nine sit in one form on P15; the other 12 pages have none, so autofill is a single-site setting rather than common practice.
Do product pages have fewer controls than homepages?
The medians are close: 62 controls across 13 product pages versus 70 across 25 homepages; product pages are denser per page, but the page types differ and are only compared side by side.
Do 25 sites represent the industry?
No. This is the same equipment-company sample; the product-page subset is 13 pages and is not an industry sample.
Can the data be re-checked?
Yes. The public CSV has 13 rows by 13 columns; scripts/form_label_probe.py has 11 offline unit tests.