¿Cómo puedo agregar readonly
a un específico <input>
? .attr('readonly')
No funciona.
¿Cómo puedo agregar readonly
a un específico <input>
? .attr('readonly')
No funciona.
Respuestas:
jQuery <1.9
$('#inputId').attr('readonly', true);
jQuery 1.9+
$('#inputId').prop('readonly', true);
Lea más sobre la diferencia entre prop y attr
Use $ .prop ()
$("#descrip").prop("readonly",true);
$("#descrip").prop("readonly",false);
$.prop()
: Prop establecerá el atributo de solo lectura en una cadena en blanco / vacía, por lo que si tiene algún CSS que use el selector de atributos [readonly="readonly"]
, deberá cambiarlo a [readonly]
(o incluir ambos).
Readonly es un atributo tal como se define en html, así que trátelo como tal.
Debe tener algo como readonly = "readonly" en el objeto con el que está trabajando si desea que no sea editable. Y si desea que sea editable nuevamente, no tendrá algo como readonly = '' (esto no es estándar si lo entendí correctamente). Realmente necesita eliminar el atributo como un todo.
Como tal, mientras usa jquery, agregarlo y eliminarlo es lo que tiene sentido.
Establecer algo de solo lectura:
$("#someId").attr('readonly', 'readonly');
Eliminar solo lectura:
$("#someId").removeAttr('readonly');
Esta fue la única alternativa que realmente funcionó para mí. ¡Espero eso ayude!
.attr('readonly', 'readonly')
debería hacer el truco. Tu .attr('readonly')
solo devuelve el valor, no establece uno.
.attr
valor solo debe ser una cadena o un número, no un booleano, de acuerdo con los documentos de jQuery: api.jquery.com/attr/#attr2 Además, los "atributos booleanos" HTML solo deben ser una cadena vacía o el valor del atributo. Creo que la solución es usar .prop()
para evitar confusiones.
Creo que "deshabilitado" excluye la entrada de ser enviada en la POST
Para habilitar solo lectura:
$("#descrip").attr("readonly","true");
Para deshabilitar solo lectura
$("#descrip").attr("readonly","");
Use la propiedad setAttribute. Tenga en cuenta, por ejemplo, que si selecciona 1, aplique el atributo de solo lectura en el cuadro de texto; de lo contrario, elimine el atributo de solo lectura.
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 la versión jQuery <1.9:
$('#inputId').attr('disabled', true);
Para la versión jQuery> = 1.9:
$('#inputId').prop('disabled', true);