2009-09-14 5 views
7

Je cettejQuery readonly attribute problèmes

<input type="text" id="tbox" name="tbox" readonly="readonly" /> 

J'ai un bouton sur lequel je fais

$('#tbox').removeAttr('readonly'); 

J'ai aussi essayé de faire ce

$('#tbox').attr('readonly', false); 

.. mais aucun travail ..

+1

Votre code semble bien se passer. Un autre code générera l'erreur. Essayez de déboguer en utilisant firebug. – rahul

+0

Utilisez Prop() au lieu de attr(). Voir cet article, http://stackoverflow.com/questions/5874652/prop-vs-attr. En outre, si vous êtes dans IE, vérifiez le mode de compatibilité (Outils> "Affichage de compatibilité") assurez-vous que la vue de compatibilité n'est pas cochée. – spoony

Répondre

13

Vous aurez besoin de faire ceci lorsque le DOM a été chargé en utilisant l'événement ready de jQuery pour l'objet document. Voici un Working Demo

$(document).ready(function() { 

    $('#tbox').removeAttr('readonly'); 

}); 

ou le raccourci

$(function() { 

    $('#tbox').removeAttr('readonly'); 

}); 

EDIT:

Je viens de lire sur la façon dont one of your other questions$() ne fonctionnait pas, mais quand vous avez utilisé jQuery(), votre code a fonctionné. Cela indique qu'il existe un conflit avec la fonction $, probablement en raison de l'utilisation d'un autre cadre JavaScript sur la page qui utilise également le raccourci $. Vous pouvez

1- utiliser noConflict() de jQuery pour contourner ce problème. Vous pouvez affecter la fonction de sélecteur jQuery à un autre alias.

2- utilisation jQuery() dans votre code à la place de $()

3- envelopper votre code jQuery dans une fonction anonyme auto-invocation qui va encore vous permettre d'utiliser le raccourci $() pour le sélecteur jQuery à l'intérieur de celui-ci

(function($) { 

    $(function() { 

     $('#tbox').removeAttr('readonly'); 

    }); 

})(jQuery); 

Ceci est une fonction anonyme qui prend un paramètre, $ et est exécutée immédiatement, en passant comme argument jQuery pour ce paramètre.

+3

+ 1 réponse utile et même un exemple de travail! :) –

+0

@ mathius1 On dirait que l'exemple a été victime d'une vulnérabilité dans JSBin. Je l'ai mis à jour pour pointer vers l'exemple original correct. Merci pour le spot –

2
La différence est ici

Lire l'article sur jetlogs

qu'ils font

<input type="text" id="tbox" name="tbox" readonly /> 

Et puis

$('#tbox').removeAttr('readonly'); 

devrait fonctionner.

2

Je sais que c'est maintenant Décembre 2010, mais je viens de lire ce post lors de la recherche sur l'utilisation de JQuery pour définir et supprimer READONLY sur la boîte de texte d'un formulaire. J'ai trouvé et utilisé ceci:

`$ ('# id-name'). Attr ('readonly', true); // le rend en lecture seule

$ ('# nom-id').attr ('readonly', faux); // rend editable`

+0

Merci .. cela a fonctionné pour moi. Je ne sais pas pourquoi mais simplement utiliser attr ("readonly") ne ferait pas l'affaire. –

0
<input type="submit" id="btn1" onclick="setTimeout(disablefunction, 1);"> 

    add function of java script 
     <script type="text/javascript" > 


     function disablefunction() 
     { 
      $('#btn1').attr('disabled',true) 
     } 


     </script> 

Je suis sûr que cela fonctionnera à 100%