2009-09-14 15 views
7

ho questojQuery sola lettura attribuire problemi

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

Ho un tasto su cui faccio questo

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

Ho anche provato a fare questo

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

.. ma nessuno funziona ..

+1

Il tuo codice sembra essere a posto. Qualche altro codice genererà l'errore. Prova a eseguire il debug usando firebug. – rahul

+0

Usa Prop() invece di attr(). Vedi questo articolo, http://stackoverflow.com/questions/5874652/prop-vs-attr. Inoltre, se sei in IE, controlla la modalità di compatibilità (Strumenti> "Visualizzazione Compatibilità") assicurati che Visualizzazione Compatibilità non sia selezionata. – spoony

risposta

13

Avrete bisogno di fare questo quando il DOM è stato caricato utilizzando l'evento ready di jQuery per l'oggetto documento. Ecco un Working Demo

$(document).ready(function() { 

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

}); 

o la scorciatoia

$(function() { 

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

}); 

EDIT:

Ho appena letto su one of your other questions come $() non funzionava, ma quando si è utilizzato jQuery(), il codice ha funzionato. Ciò indica che esiste un conflitto con la funzione $, molto probabilmente a causa di un altro framework JavaScript utilizzato nella pagina che utilizza anche la stenografia $. È possibile

1- utilizzare jQuery's noConflict() per aggirare questo problema. È possibile assegnare la funzione selettore jQuery a un alias diverso.

2- uso jQuery() nel codice al posto di $()

3- avvolgere il codice jQuery in una funzione anonima di auto-invocazione che comunque permetterà di utilizzare il $() scorciatoia per il selettore jQuery all'interno di esso

(function($) { 

    $(function() { 

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

    }); 

})(jQuery); 

Questa è una funzione anonima che accetta un parametro, $ e viene eseguito immediatamente, passando jQuery come argomento per quel parametro.

+3

+1 risposta utile e anche un esempio di lavoro! :) –

+0

@ mathius1 Sembra che l'esempio sia stato vittima di una vulnerabilità in JSBin. L'ho aggiornato per indicare l'esatto esempio originale. Grazie per il posto –

2

articolo lettura su jetlogs

La differenza qui è che lo fanno

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

E poi

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

dovrebbe funzionare.

2

So che questo è ora dicembre 2010, ma ho appena letto questo post durante la ricerca su utilizzando JQuery per impostare e rimuovere READONLY nella casella di testo di un modulo. Ho trovato e usato questo:

`$ ('# id-name'). Attr ('readonly', true); // lo rende di sola lettura

$ ('# nome-id').attr ('readonly', false); // rende editable`

+0

Grazie .. ha funzionato per me. Non so perché, ma semplicemente usando attr ("readonly") non farebbe il trucco. –

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> 

Sono sicuro che questo funzionerà al 100%