I just realized, but "numbers" appearance fields don't respect "readonly".
Here are two entry fields (both are type=integer). The top is readonly=no, and the bottom is readonly=yes (notice the light grey appearance of the bottom two fields, indicating they are both disabled). However, you can still enter numbers into the disabled field. To make matters worse, the disabled "numbers" field not only allows entry, but it disallows clearing of values (notice that there is no "x").

This is definitely NOT intended. Please fix this bug.