2009-07-03 19 views
9

¿Cómo evito que el usuario cambie el valor en un campo de entrada (que contiene un cierto valor para ser copiado en el portapapeles) sin usar disabled = "true"? El texto debe seleccionarse una vez que el usuario haga clic en el campo (eso ya está funcionando) pero ingresar algo no debería tener ningún efecto.Javascript/jQuery: ¿Cómo evitar que se modifique el campo de entrada activa?

Gracias

jQuery('input.autoselect[value]').focus(function() { jQuery(this).select(); }); 
+1

Así que tener una entrada, un elemento completamente diseñado para obtener los datos del usuario y ponerlo en el sistema, como una ¿salida? ¿Y ahora está tratando de evitar el problema de las entradas que están diseñadas para aceptar entradas? Arreglaría el marcado para que no use una entrada únicamente para la salida. – Quentin

+0

¿Cuál es el voto negativo de ??? –

+0

echa un vistazo a youtube, ellos están haciendo lo mismo. Solo quiero proporcionar un enlace corto que el usuario pueda copiar fácilmente en el portapapeles. ¿¿¿Qué está mal con eso??? Los campos de entrada tienen algunas ventajas aquí. ¡Solo trata de ser productivo! –

Respuesta

33

sólo lectura en el HTML de la entrada es todo lo que necesita para evitar que el usuario edite la entrada.

<input readonly="readonly" type="text" value="You can't edit me!"/> 
+1

jaja, eso es tan desagradable ... Eres ¡verdad, solo intenté deshabilitar pero no solo, me olvidé por completo! ¡Gracias! –

+1

+1 Soy un idiota también. :-) Leí "sin usar deshabilitado" y pensé "sin usar atributos". – Stobor

+0

no hay problema! Acabo de leer la pregunta (3 veces) y me confundí sobre cuál era el truco. ;-) – scunliffe

0

Creo que esto debería funcionar:

var val = jQuery('input.autoselect[value]').val(); 
jQuery('input.autoselect[value]').change(function(){ 
    jQuery(this).val(val); 
}); 

O posiblemente (no estoy seguro)

jQuery('input.autoselect[value]').keydown(function(){ 
    return false; 
}); 
+0

Gracias, la segunda versión funciona pero también impide que el usuario copie el contenido (porque CMD + C tampoco funciona), con la primera versión tengo el problema de que debería funcionar para más de 1 campo en una página. ¿Alguna idea sobre cómo resolver esto? –

0

Basado en Pim's answer, ¿qué tal esto?

jQuery(document).ready(function(){ 

    jQuery("input.readonly").each(function(){ 
      jQuery(this).attr("savedVal", jQuery(this).val()); 
    }); 

    jQuery("input.readonly").change(function(){ 
      jQuery(this).val(jQuery(this).attr("savedVal")); 
    }); 

}); 

(no está comprobado, pero demuestra la idea ...)

+0

Ejemplo: http://jsbin.com/iqomu (fuente http://jsbin.com/iqomu/edit) – Stobor

+0

gracias, pero scunliffe lo resolvió con más elegancia ... –

0
<script> 
document.getElementById("newval").readOnly = true; 
</script> 

reloj de la capital "O" en sólo lectura ...

Cuestiones relacionadas