Как добавить атрибут «только для чтения» к <input>? - PullRequest
274 голосов
/ 20 августа 2009

Как я могу добавить readonly к определенному <input>? .attr('readonly') не работает.

Ответы [ 9 ]

497 голосов
/ 20 августа 2009

JQuery <1,9 </p>

$('#inputId').attr('readonly', true);

jQuery 1.9 +

$('#inputId').prop('readonly', true);

Узнайте больше о разнице между реквизитом и атрибутом

145 голосов
/ 30 ноября 2011

Использование $. Prop ()

$("#descrip").prop("readonly",true);

$("#descrip").prop("readonly",false);
24 голосов
/ 09 апреля 2012

Readonly - это атрибут, определенный в html, поэтому относитесь к нему как к одному.

Вам нужно иметь что-то вроде readonly = "readonly" в объекте, с которым вы работаете, если вы хотите, чтобы он не редактировался. И если вы хотите, чтобы он снова был редактируемым, у вас не будет что-то вроде readonly = '' (это не стандартно, если я правильно понял). Вам действительно нужно удалить атрибут в целом.

Таким образом, при использовании jquery его добавление и удаление имеет смысл.

Установить что-то только для чтения:

$("#someId").attr('readonly', 'readonly');

Удалить только для чтения:

$("#someId").removeAttr('readonly');

Это была единственная альтернатива, которая действительно работала для меня. Надеюсь, это поможет!

20 голосов
/ 20 августа 2009

.attr('readonly', 'readonly') должен сделать свое дело. Ваш .attr('readonly') только возвращает значение, но не устанавливает его.

16 голосов
/ 11 сентября 2009

Я думаю, что "отключен" исключает ввод от отправки на POST

11 голосов
/ 25 марта 2011

Вы можете отключить чтение только с помощью .removeAttr;

$('#descrip').removeAttr('readonly');
5 голосов
/ 19 августа 2010

Для включения только для чтения:

$("#descrip").attr("readonly","true");

Для отключения только для чтения

$("#descrip").attr("readonly","");
3 голосов
/ 08 мая 2015

Используйте свойство setAttribute. Обратите внимание на пример, что если выбрано 1, применить атрибут readonly к текстовому полю, в противном случае удалить атрибут только для чтения.

http://jsfiddle.net/baqxz7ym/2/

document.getElementById("box1").onchange = function(){
  if(document.getElementById("box1").value == 1) {
    document.getElementById("codigo").setAttribute("readonly", true);
  } else {
    document.getElementById("codigo").removeAttribute("readonly");
  }
};

<input type="text" name="codigo" id="codigo"/>

<select id="box1">
<option value="0" >0</option>
<option value="1" >1</option>
<option value="2" >2</option>
</select>
0 голосов
/ 22 июля 2017

Для версии jQuery <1.9: </p>

$('#inputId').attr('disabled', true);

Для версии jQuery> = 1.9:

$('#inputId').prop('disabled', true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...