2009-09-14 12 views
7

tengo estejQuery sólo lectura atribuir problemas

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

Tengo un botón en el que hago esto

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

También he intentado hacer esto

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

.. pero ninguno funciona ..

+1

Su código parece estar bien. Algún otro código generará el error. Intenta depurar usando Firebug. – rahul

+0

Utilice Prop() en lugar de attr(). Ver este artículo, http://stackoverflow.com/questions/5874652/prop-vs-attr. Además, si está en IE, verifique el modo de compatibilidad (Herramientas> "Vista de compatibilidad") y asegúrese de que la Vista de compatibilidad no esté marcada. – spoony

Respuesta

13

Tendrás que hacer esto cuando el DOM se ha cargado usando el evento listo de jQuery para el objeto del documento. He aquí una Working Demo

$(document).ready(function() { 

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

}); 

o la abreviatura

$(function() { 

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

}); 

EDIT:

acabo de leer sobre cómo one of your other questions$() no estaba funcionando, pero cuando se utiliza jQuery(), su código trabajado. Eso indica que hay un conflicto con la función $, muy probablemente debido a que también se utiliza en la página otro marco de JavaScript que también utiliza la taquigrafía $. Puede

1- use jQuery's noConflict() para evitar esto. Puede asignar la función del selector jQuery a un alias diferente.

2- uso jQuery() en el código en lugar de $()

3- envolver su código jQuery en una función anónima auto-invocando que todavía le permitirá utilizar la abreviatura $() para el selector de jQuery dentro de ella

(function($) { 

    $(function() { 

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

    }); 

})(jQuery); 

Esta es una función anónima que toma un parámetro, $ y se ejecuta inmediatamente, pasando jQuery como argumento para ese parámetro.

+3

+1 respuesta útil e incluso un ejemplo de trabajo! :) –

+0

@ mathius1 Parece que el ejemplo fue víctima de una vulnerabilidad en JSBin. Lo he actualizado para señalar el ejemplo original correcto. Gracias por el spot –

2

artículo de lectura en jetlogs

La diferencia aquí es que lo hacen

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

Y luego

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

debería funcionar.

2

Sé que esto es ahora diciembre de 2010, pero acabo de leer esta publicación cuando busco utilizar JQuery para establecer y eliminar READONLY en el cuadro de texto de un formulario. Encontré y uso esto:

`$ ('# id-name'). Attr ('readonly', true); // lo hace solo de lectura

$ ('# id-name').attr ('readonly', falso); // hace editable`

+0

Gracias ... eso funcionó para mí. No sé por qué, pero simplemente usar attr ("readonly") no funcionaría. –

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> 

Estoy seguro de que esto funcionará 100%