2013-04-19 2 views
53

Я знаю об атрибуте readonly для text input, но при чтении кода с других сайтов (противная привычка моя) Я видел больше, чем одну реализацию для него:Каков правильный синтаксис атрибута readonly для входных текстовых элементов?

<input type="text" value="myvalue" class="class anotherclass" readonly > 

и

<input type="text" value="myvalue" class="class anotherclass" readonly="readonly" > 

и Я даже видел

<input type="text" value="myvalue" class="class anotherclass" readonly="true" > 

..И Я считаю, что я видел еще больше, но не могу вспомнить точный синтаксис сейчас ..

Итак, какой из них правильный, который я должен использовать?

+0

Возможный дубликат stackoverflow.com/questions/1033944/... поскольку оба являются логическими атрибутами (не помечены), тесно связаны, но фокусируются на статусах реализации вместо стандартного: [в чем разница между readonly = "true" и readonly = «readonly»] (http://stackoverflow.com/questions/6172911/what-is-the-difference-between-readonly-true-readonly-readonly) –

ответ

64

От w3:

чтения = "только для чтения" или "" (пустая строка) или пустым - Указывает, что элемент представляет элемент управления, значение которого не должна быть изм.

Так что в принципе это то же самое.

+2

@ObmerkKronen это сработает, прочитайте больше [здесь] (http: //stackoverflow.com/questions/6172911/what-is-the-difference-between-readonly-true-readonly-readonly). – Vucko

+12

Даже если он работает, это не значит, что вы должны его использовать. Моя рекомендация - придерживаться стандарта. Не вводите ошибки только потому, что можете. –

+1

@MrLister Стандарт рекомендует придерживаться стандарта, который, несмотря на то, что он круглый, несет больше веса :) – aross

4

это должно быть

<input type="text" value="myvalue" class="class anotherclass" readonly="readonly" /> 
+0

Это только одна из трех действующих форм. Ответ Циро Сантилли намного лучше. – ToolmakerSteve

53

HTML5 спецификации:

http://www.w3.org/TR/html5/forms.html#attr-input-readonly:

Предназначенный только дл чтени атрибут представляет собой логический атрибут

http://www.w3.org/TR/html5/infrastructure.html#boolean-attributes:

Наличие логического атрибута для элемента представляет истинное значение, а отсутствие атрибута представляет собой ложное значение.

Если атрибут присутствует, его значение должно быть либо пустой строкой, либо значением, которое не соответствует значению ASCII для канонического имени атрибута, без начального или конечного пробела.

Заключение:

Следующие действительны, эквивалентны и верно:

<input type="text" readonly /> 
<input type="text" readonly="" /> 
<input type="text" readonly="readonly" /> 
<input type="text" readonly="ReAdOnLy" /> 

Следующие недействителен:

<input type="text" readonly="0" /> 
<input type="text" readonly="1" /> 
<input type="text" readonly="false" /> 
<input type="text" readonly="true" /> 

Отсутствие атрибута является единственным допустимым синтаксисом для ложного:

<input type="text"/> 

Рекомендация

Если вы заботитесь о написании правильного XHTML, используйте readonly="readonly", поскольку <input readonly> недействителен и другие альтернативы менее удобочитаемый. Иначе просто используйте <input readonly>, поскольку он короче.

+4

Спасибо, что указали, какой абсолютный мозг пердит спецификацию: по дизайну вы не можете вычислить значение атрибута для его переключения (например, шаблонный HTML на любом сервере - PHP/JSP/ASP - или клиент - угловой - с истинным/false в значении атрибута). Вы должны УДАЛИТЬ атрибут, чтобы отключить его. НЕТОДИМОСТЬ в комитете поняла, что такое фальшивка? – Roboprog

+0

@ Робопрог ха-ха, правда, это немного раздражает. –

+1

Очень хорошо объяснено. Это должен был быть принятый ответ. –

Смежные вопросы