Come posso aggiungere readonly
uno specifico <input>
? .attr('readonly')
non funziona.
Come posso aggiungere readonly
uno specifico <input>
? .attr('readonly')
non funziona.
Risposte:
jQuery <1.9
$('#inputId').attr('readonly', true);
jQuery 1.9+
$('#inputId').prop('readonly', true);
Maggiori informazioni sulla differenza tra prop e attr
Usa $ .prop ()
$("#descrip").prop("readonly",true);
$("#descrip").prop("readonly",false);
$.prop()
: Prop imposterà l'attributo readonly su stringa vuota / vuota, quindi se hai qualche CSS che usa il selettore di attributi per [readonly="readonly"]
, allora dovrai cambiarlo in [readonly]
(o includerli entrambi).
Di sola lettura è un attributo come definito in HTML, quindi trattalo come tale.
Devi avere qualcosa come readonly = "readonly" nell'oggetto con cui stai lavorando se vuoi che non sia modificabile. E se vuoi che sia di nuovo modificabile non avrai qualcosa come readonly = '' (questo non è standard se ho capito correttamente). Devi veramente rimuovere l'attributo nel suo insieme.
Come tale, mentre si utilizza jquery aggiungerlo e rimuoverlo è ciò che ha senso.
Imposta qualcosa di sola lettura:
$("#someId").attr('readonly', 'readonly');
Rimuovi di sola lettura:
$("#someId").removeAttr('readonly');
Questa è stata l'unica alternativa che ha funzionato davvero per me. Spero che sia d'aiuto!
.attr('readonly', 'readonly')
dovrebbe fare il trucco. Il tuo .attr('readonly')
restituisce solo il valore, non imposta uno.
.attr
valore dovrebbe essere solo una stringa o un numero, non un valore booleano, secondo i documenti jQuery: api.jquery.com/attr/#attr2 Inoltre, gli "attributi booleani HTML" dovrebbero essere solo una stringa vuota o il valore dell'attributo. Penso che la soluzione sia usare .prop()
per evitare confusione.
Penso che "disabilitato" esclude l'input dall'invio sul POST
Per abilitare in sola lettura:
$("#descrip").attr("readonly","true");
Per disabilitare in sola lettura
$("#descrip").attr("readonly","");
Utilizzare la proprietà setAttribute. Si noti ad esempio che se si seleziona 1 applica l'attributo readonly nella casella di testo, altrimenti rimuovere l'attributo in sola lettura.
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>
Per la versione jQuery <1.9:
$('#inputId').attr('disabled', true);
Per la versione jQuery> = 1.9:
$('#inputId').prop('disabled', true);