Try this:
$(".control").prop({ readOnly: true });
I think of it like this: .attr() gets the default value in the html markup while .prop() gets/sets the value dynamically. Look at the following:
<input id="someInput" readonly="readOnly" />
$(".control").attr("readOnly") // would yield "readOnly"
$(".control").prop("readOnly") // would yield true
$(".control").is(":readOnly") // would yield true
The api documentation says this:
The difference between attributes and
properties can be important in
specific situations. Before jQuery
1.6, the .attr() method sometimes took property values into account when
retrieving some attributes, which
could cause inconsistent behavior. As
of jQuery 1.6, the .prop() method
provides a way to explicitly retrieve
property values, while .attr() only
retrieves attributes.