Foros del Web » Programando para Internet » Javascript »

Permitir selección de texto solo en campos de un formulario

Estas en el tema de Permitir selección de texto solo en campos de un formulario en el foro de Javascript en Foros del Web. Hola, muy buenas a todos !! Me gustaría saber si alguno de ustedes conoce un modo de evitar la selección de texto en toda la ...
  #1 (permalink)  
Antiguo 18/06/2007, 12:21
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años, 8 meses
Puntos: 0
Permitir selección de texto solo en campos de un formulario

Hola, muy buenas a todos !!

Me gustaría saber si alguno de ustedes conoce un modo de evitar la selección de texto en toda la página menos en los campos de texto de un formulario...

Veran, es que la idea me ha venido a la mente cuando he visto este script:

En el head se coloca:

Código:
<script type="text/javascript">
function disableSelection(target){
if (typeof target.onselectstart!="undefined") //IE route
	target.onselectstart=function(){return false}
else if (typeof target.style.MozUserSelect!="undefined") //Firefox route
	target.style.MozUserSelect="none"
else //All other route (ie: Opera)
	target.onmousedown=function(){return false}
target.style.cursor = "default"
}
</script>
Y en el body esto otro:

Código:
<script type="text/javascript">
var alltables=document.getElementsByTagName("table")
for (var i=0; i<alltables.length; i++)
disableSelection(alltables[i]) //disable text selection
within all tables on the page
</script>
Y entonces digo yo... en vez de tablas y ese segundo código... ¿por qué otras cosas lo deberíamos sustituir para lograr lo deseado amigos?

¡¡ Muchas gracias desde ahora y reciban un abrazo !!
  #2 (permalink)  
Antiguo 19/06/2007, 06:46
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Permitir selección de texto solo en campos de un formulario

He seguido dandole vueltas al tema y no avanzo más de lo que les voy a comentar...

A ver, verán... resulta que si yo le pongo en el <body> es siguiente código (en vez del indicado para las "tablas"), pues se evita la selección de texto en toda la página:

Código:
<script type="text/javascript">
disableSelection(document.body)
</script>
Eso parece claramente lógico; pero mi cosa es si se le podría añadir a ello alguna condición de que, si se trata de unas "id" o "names" concretos que le definamos de los campos de texto del formulario, pues no haga nada... y luego un "else" con la orden de que sí lo haga...

Espero haberme explicado... no obstante, alomejor no voy bien por ese camino... ¿Podrían guiarme y aconsejarme para a ver si así logramos entre todos esta útil tarea por favor?

Muchas gracias nuevamente !! Saludos !!
  #3 (permalink)  
Antiguo 23/06/2007, 09:50
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Permitir selección de texto solo en campos de un formulario

¿Alguna idea por favor?
  #4 (permalink)  
Antiguo 23/06/2007, 11:03
Avatar de programeitor  
Fecha de Ingreso: febrero-2005
Mensajes: 994
Antigüedad: 19 años, 11 meses
Puntos: 9
Re: Permitir selección de texto solo en campos de un formulario

pues si ,vas por buen camino ,pero ¿en realidad es util lo que pretendes? eso de inhibir la seleccion de texto, .lo digo porque podria haber alguien, a quien le interesara.

Salud os
  #5 (permalink)  
Antiguo 23/06/2007, 11:10
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Re: Permitir selección de texto solo en campos de un formulario

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www.w3.org/1999/xhtml">
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<
title>test</title>
<
script>
function 
addCss(cssCode) {
var 
styleElement document.createElement("style");
styleElement.type "text/css";
if (
styleElement.styleSheet) {
styleElement.styleSheet.cssText cssCode;
} else {
styleElement.appendChild(document.createTextNode(cssCode));
}
document.getElementsByTagName("head")[0].appendChild(styleElement);
}
function 
noseleccionar(){
for(
i=0;i<document.body.childNodes.length;i++){
if(
document.body.childNodes[i].nodeType!=|| document.body.childNodes[i].nodeName=='FORM')continue;
//alert(document.body.childNodes[i].nodeName)
document.body.childNodes[i].setAttribute('unselectable','on');
cssCode=document.body.childNodes[i].nodeName+'{-moz-user-select:none}'
addCss(cssCode);
}
}
window.onload=noseleccionar;
</script>
</head>

<body>
<div>ccccccccccc</div>

<form id="form1" name="form1" method="post" action="">
  <textarea name="textarea">sss sssss sssssssss</textarea>
</form>
</body>
</html> 
  #6 (permalink)  
Antiguo 27/06/2007, 10:39
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Permitir selección de texto solo en campos de un formulario

¡¡ Absolutamente perfecto !! Gran trabajo !! Muchas gracias !!

Última edición por bodyboard_jerez; 27/06/2007 a las 11:46
  #7 (permalink)  
Antiguo 27/06/2007, 11:36
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Re: Permitir selección de texto solo en campos de un formulario

Me alegra que te sirva
  #8 (permalink)  
Antiguo 27/06/2007, 11:46
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: Permitir selección de texto solo en campos de un formulario

La única pega es que no logro aplicarlo a mi web, pero en tu código-ejemplo funciona muy bien.

Podríamos charlar en privado sobre el tema por favor?

Gracias desde ya, de veras, es algo importante para mí.
  #9 (permalink)  
Antiguo 27/06/2007, 11:57
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 7 meses
Puntos: 834
Re: Permitir selección de texto solo en campos de un formulario

Ahí te envié un privado.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:30.