2012-06-13 23 views
9

estoy tratando de agregar solo a todas las entradas y luego, con un clic, eliminar el readonly para que funcione para tipear. el set de solo lectura para todas las entradas funciona pero el botón quitar al hacer clic no funciona, por favor ayuda.readonly con jquery

mi código:

<script language="javascript"> 
$(document).ready(function() 
{ 
$('#secureFields :input').attr('readonly', true); 

    $('.readonly').click(
    function() 
    { 
     if ($('.readonly').attr("readonly") == true) 
     { 
      $('.readonly').val(''); 
      $('.readonly').removeAttr("readonly"); 
     }   
    }); 
}); 
</script> 

html es así:

<table class='table' id='secureFields' > 
     <tr> 
      <td width=200>First Name:</td> 
      <td><input readonly='readonly' type='text' name='firstname' size=30 class='required'/></td> 
     </tr> 
     <tr> 
+0

nota importante:. No escriba 'language = "javascript"' 'pero type = "text/javascript"' – Christoph

+0

Tratar como este 'if ($ ('. Sólo lectura ') attr (' sólo lectura ') ==' readonly ') ' – jakee

+1

para evitar herramientas de autocompletar, quiere que el usuario inserte esos campos manualmente – Abude

Respuesta

3

nota importante : no escriba language="javascript" pero type="text/javascript"

Debe seleccionar las entradas con attribute solo lectura, no class solo lectura.

Así que haga lo siguiente:

$('input[readonly]').click(

en lugar de

$('.readonly').click(

y luego sólo tiene una línea:

$(this).removeProp("readonly"); 

Este es el código correcto:

$('input[readonly]').click(function(){ 
    $(this).removeProp("readonly");   
}); 

Mira la Examplefiddle

FYI: guión no es detenido por su readonly, que puede simplemente establecer el valor del campo ...

+0

intenté ahora, pero no funciona :( – Abude

+1

@Abude echa un vistazo al ejemplo. Funciona. Perh aps hay algo más incorrecto con su código. – Christoph

+1

@Abude Nota importante: ¡necesita la versión 1.7 de jQuery para que esto funcione! (Si no tiene que usar 'removeAttr') – Christoph

3

la clase que ha especificado es 'necesaria' de modo $('.readonly').attr("readonly") == true debería ser $('.required').attr("readonly") == true y así sucesivamente

+0

sí, hice un error en la publicación, pero en realidad es necesario, pero aún no funciona, ¿necesito algo más como jquery 1.2? – Abude

+0

puede publicar código completo, echaré un vistazo – Subash

2

intente esto:

$('input').click(function() { 
    $(this).prop('readonly', false) 
}); 
+0

no funcionó ... :( – Abude

+1

@Abude ¿hay alguna clase de solo lectura? – undefined

+0

sí, la clase es obligatoria, fue un error en mi publicación – Abude

9

Qué quiere decir:

$("input").click(function() { 
    if ($(this).is('[readonly]')) { 
    $(this).removeAttr("readonly"); 
    } 
}); 

Ver: jsFiddle

+0

no funciona ... :( – Abude

+1

compruebe el enlace jsfiddle ... ¿no quería decir algo así ... –

2

probar esto

$(document).ready(function() { 
    $('#secureFields :input').attr('readonly', true); 
    $('input[readonly]').click(
     function (event) { 
     if ($(event.currentTarget).attr("readonly") == "readonly") { 
      $(event.currentTarget).removeAttr("readonly"); 
      $(event.currentTarget).val(""); 
     } 
    }); 
}); 

esto cambia el atributo de sólo lectura en la entrada que se ha hecho clic, creo que sirve

+0

no ayudó ... :(gracias – Abude

1

Tal vez usted quiere simplemente:

$('#secureFields :input').click(function() { 
    $('input[readonly]').val('').removeAttr('readonly');   
}); 

Dado que no hay readonly selector de CSS en el HTML, y por lo tanto su secuencia de comandos no hace nada, ya que hace referencia a .readonly, tengo que hacer suposiciones sobre lo que está tratando de hacer. Lo anterior hará que todos los campos de solo lectura sean de solo lectura y borrará el valor actual cuando se haga clic en cualquier entrada.

3
<html> 

<table class='table' id='secureFields'> 
    <tr> 
     <td width=200>First Name:</td> 
     <td><input type='text' name='firstname' size=30 class='required'/></td> 
    </tr> 
</table> 

    <button id="btnEnableInputs" type="button">Enable!</button>  

</html> 

$(document).ready(function() { 

$("#secureFields :input").each(function() { 
    $(this).attr("readonly", true); 
}); 

$("#btnEnableInputs").click(function() { 
    $("#secureFields :input").each(function() { 
      $(this).attr("readonly", false); 
    }); 
}); 
}); 

http://jsfiddle.net/hfK8f/

+0

gracias pero no cambio un botón, quiero un clic en – Abude

+0

@Abude - cambie $ ("# btnEnableInputs") a $ (". Readonly"). Haga clic en –

1

Para evitar autocompletar, puede simplemente añadir autocomplete = "off" en la etiqueta de entrada o la etiqueta de formulario (si está configurada para ambos, el valor de entrada tiene prioridad, por lo que puede usar autocompletar = "on" para las etiquetas individuales

de todas formas, la .Selector selecciona elementos con una clase específica, no atribuir puede:..

seleccionar usando el selector de atributos: entrada [sólo lectura] para seleccionar entradas de sólo lectura en el que el atributo existe, o entrada [ readonly = "readonly"] para seleccionar la entrada donde el atributo se establece a sí mismo (el primero es preferido).

De hecho, no es necesario seleccionar sólo las entradas que han establecido el atributo y se puede escribir lo siguiente para quitar el atributo de sólo lectura tan pronto como se hace clic en:

$('input').click(function(){ 
    $(this).removeAttr('readonly') 
} 

Aún así, probablemente solo quiera < entrada autocompletar = "apagado" ... > todo el tiempo.

+0

quiero resolver el autocompletado, no autocompletar, herramientas de autocompletar guarda su información, contraseñas, datos ... etc, y luego con un solo relleno, escribe todos sus campos ... – Abude

2
comment the script part/**/ to check readonly mode 

<body> 
<table class='table' id='secureFields' > 
     <tr> 
      <td width=200>First Name:</td> 
      <td><input readonly="readonly" type='text' name='firstname' size=30 class='required'/></td> 
     </tr> 
     </table> 

</body> 

<script type="text/javascript"> 
    $(document).ready(function() 
{ 
$('#secureFields:input').attr('readonly', true); 
$('.required').val(''); 

    $('.required').focus(
    function() 
    { 
     if ($('.required').attr("readonly") == true) 
     { 

      $('.required').removeAttr("readonly"); 
     }   
    }); 
}); 
</script> 
+0

gracias, resuelto :) – Abude

+0

de nada :-) – jathin

Cuestiones relacionadas