Como posso adicionar readonly
a um específico <input>
? .attr('readonly')
não funciona.
javascript
jquery
Qiao
fonte
fonte
Respostas:
jQuery <1.9
jQuery 1.9+
Leia mais sobre a diferença entre prop e attr
fonte
Use $ .prop ()
fonte
$.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:
Remova somente leitura:
Esta foi a única alternativa que realmente funcionou para mim. Espero que ajude!
fonte
.attr('readonly', 'readonly')
deve fazer o truque. Você.attr('readonly')
só retorna o valor, ele não define um.fonte
.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
fonte
Você pode desativar o readonly usando o .removeAttr;
fonte
Para ativar somente leitura:
Para desativar somente leitura
fonte
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/
fonte
Para a versão jQuery <1.9:
Para a versão jQuery> = 1.9:
fonte