Como posso adicionar readonly
a um específico <input>
? .attr('readonly')
não funciona.
Como posso adicionar readonly
a um específico <input>
? .attr('readonly')
não funciona.
Respostas:
jQuery <1.9
$('#inputId').attr('readonly', true);
jQuery 1.9+
$('#inputId').prop('readonly', true);
Leia mais sobre a diferença entre prop e attr
Use $ .prop ()
$("#descrip").prop("readonly",true);
$("#descrip").prop("readonly",false);
$.prop()
: Prop definirá o atributo readonly como string em branco / vazia; portanto, se você tiver algum CSS que use o seletor de atributos [readonly="readonly"]
, precisará alterá-lo para [readonly]
(ou incluir ambos).
O Readonly é um atributo conforme definido no html, portanto, trate-o como um.
Você precisa ter algo como readonly = "readonly" no objeto com o qual está trabalhando, se desejar que não seja editável. E se você quiser que seja editável novamente, não terá algo como readonly = '' (isso não é padrão se eu entendi corretamente). Você realmente precisa remover o atributo como um todo.
Como tal, ao usar o jquery, adicioná-lo e removê-lo é o que faz sentido.
Defina algo somente leitura:
$("#someId").attr('readonly', 'readonly');
Remova somente leitura:
$("#someId").removeAttr('readonly');
Esta foi a única alternativa que realmente funcionou para mim. Espero que ajude!
.attr('readonly', 'readonly')
deve fazer o truque. Você .attr('readonly')
só retorna o valor, ele não define um.
.attr
valor deve ser apenas uma sequência ou número, não um valor booleano, de acordo com os documentos do jQuery: api.jquery.com/attr/#attr2 Além disso, os "atributos booleanos" em HTML devem ser apenas uma sequência vazia ou o valor do atributo. Eu acho que a solução é usar .prop()
para evitar confusão.
Eu acho que "desativado" exclui a entrada de ser enviado no POST
Para ativar somente leitura:
$("#descrip").attr("readonly","true");
Para desativar somente leitura
$("#descrip").attr("readonly","");
Use a propriedade setAttribute. Observe no exemplo que, se selecione 1, aplique o atributo somente leitura na caixa de texto, caso contrário, remova o atributo somente leitura.
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>
Para a versão jQuery <1.9:
$('#inputId').attr('disabled', true);
Para a versão jQuery> = 1.9:
$('#inputId').prop('disabled', true);