Comment ajouter un attribut" readonly " à un?

Comment puis-je ajouter readonly spécifique de la <input>? .attr('readonly') ne fonctionne pas.

254
demandé sur Xufox 2009-08-20 18:49:34

9 réponses

JQuery

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

Jquery 1.9 +

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

En savoir plus sur différence entre prop et attr

452
répondu CMS 2017-05-23 12:02:58

Utilisez $.prop()

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

$("#descrip").prop("readonly",false);
143
répondu Greg 2011-11-30 05:29:03

Readonly est un attribut tel que défini en html, alors traitez-le comme un.

Vous devez avoir quelque chose comme readonly="readonly" dans l'objet avec lequel vous travaillez si vous voulez qu'il ne soit pas modifiable. Et si vous voulez qu'il soit à nouveau modifiable, vous n'aurez pas quelque chose comme readonly= " (ce n'est pas standard si j'ai bien compris). Vous devez vraiment supprimer l'attribut dans son ensemble.

En tant que tel, tout en utilisant jquery l'ajouter et le supprimer Est ce qui a du sens.

Ensemble quelque chose en lecture seule:

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

Supprimer en lecture seule:

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

C'était la seule alternative qui a vraiment fonctionné pour moi. Espérons que cela aide!

23
répondu 2012-04-09 17:31:02

.attr('readonly', 'readonly') devrait faire l'affaire. Votre .attr('readonly') ne renvoie que la valeur, il n'en définit pas une.

20
répondu ceejayoz 2009-08-20 14:50:47

Je pense que "désactivé" exclut l'entrée d'être envoyée sur le POST

14
répondu 2009-09-11 16:40:12

Vous pouvez désactiver le readonly en utilisant le .removeAttr;

$('#descrip').removeAttr('readonly');
11
répondu Steve 2011-03-25 03:34:51

Pour activer readonly:

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

Pour désactiver readonly

$("#descrip").attr("readonly","");
5
répondu Pradeep 2011-02-07 08:08:09

Utilisez la propriété setAttribute. Notez dans l'exemple que si select 1 applique l'attribut readonly sur textbox, sinon supprimez l'attribut 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>
3
répondu Diogo Rodrigues 2015-05-08 23:40:40

Pour la version jQuery

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

Pour la version jQuery > = 1.9:

$('#inputId').prop('disabled', true);
-5
répondu Osman Adak 2017-07-23 02:06:30