Foros del Web » Programando para Internet » Javascript »

Restringir de textarea groserias

Estas en el tema de Restringir de textarea groserias en el foro de Javascript en Foros del Web. Hola que tal amigos, les traigo un nuevo reto.. No se si cuenten con algun ejemplo donde muestren como eliminar o mostrar como "#$#$3 las ...
  #1 (permalink)  
Antiguo 06/06/2011, 15:55
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 2 meses
Puntos: 9
Exclamación Restringir de textarea groserias

Hola que tal amigos, les traigo un nuevo reto..

No se si cuenten con algun ejemplo donde muestren como eliminar o mostrar como "#$#$3 las palabras que yo desee bloquear de un textarea.. por ejemplo en ciertos chats cuando deseas colocar palabras restringidas aparecen como garavatos..

espero me puedan ayudar, saludos!
  #2 (permalink)  
Antiguo 07/06/2011, 15:12
Avatar de goteen_mx  
Fecha de Ingreso: abril-2005
Ubicación: D.F.
Mensajes: 403
Antigüedad: 19 años, 8 meses
Puntos: 37
Respuesta: Restringir de textarea groserias

Necesitas crear un diccionario de las palabras que no quieres que aparezcan y verificar las coincidencias, en caso que encuentres alguna reemplazar la palabra, ten encuenta que puede haber palabras como comPUTAción que podría reemplazarte por aparecer en el diccionario.

Saludos.
__________________
Born to be free.
  #3 (permalink)  
Antiguo 07/06/2011, 18:10
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 19 años
Puntos: 87
Respuesta: Restringir de textarea groserias

Antes que nada probablemente tiene que colocar la funcion de filtrado en el formulario donde esta el <textarea>

Código HTML:
Ver original
  1. <form id="chat" onsubmit="filtro()">

Luego en javascript crea un array que es una lista de palabras a censurar

Código Javascript:
Ver original
  1. var grocerias = ["puta", "puto","marica","pirobo","gonorrea"]
Luego declara la función que coloco en el formulario; la cual se encarga de generar una expresión regular por cada palabra en la lista y eliminar la palabra (indiscriminando si es mayusculas o minuscular y solo si es una palabra aparte: valida "puto" y "pUtO", pero no "computo")

Código Javascript:
Ver original
  1. function filtro(){ 
  2.     var nodo = document.getElementById("chat").elements["texto"]
  3.     var textarea = nodo.value;
  4.     for(var i = 0; i < grocerias.length;i++){
  5.         regex = new RegExp("(^|\\s)"+grocerias[i]+"($|(?=\\s))","gi")
  6.         textarea = textarea.replace(regex, function($0, $1){return $1 + "#4@!@"});
  7.     }
  8.     nodo.value = textarea;
  9. }

Cuando lleguen los datos a la otra pagina o al servidor ya no va a mostrar las palabras en la lista.

Última edición por InKarC; 07/06/2011 a las 21:03
  #4 (permalink)  
Antiguo 09/06/2011, 11:22
 
Fecha de Ingreso: septiembre-2010
Mensajes: 350
Antigüedad: 14 años, 2 meses
Puntos: 9
Respuesta: Restringir de textarea groserias

Cita:
Iniciado por InKarC Ver Mensaje
Antes que nada probablemente tiene que colocar la funcion de filtrado en el formulario donde esta el <textarea>

Código HTML:
Ver original
  1. <form id="chat" onsubmit="filtro()">

Luego en javascript crea un array que es una lista de palabras a censurar

Código Javascript:
Ver original
  1. var grocerias = ["puta", "puto","marica","pirobo","gonorrea"]
Luego declara la función que coloco en el formulario; la cual se encarga de generar una expresión regular por cada palabra en la lista y eliminar la palabra (indiscriminando si es mayusculas o minuscular y solo si es una palabra aparte: valida "puto" y "pUtO", pero no "computo")

Código Javascript:
Ver original
  1. function filtro(){ 
  2.     var nodo = document.getElementById("chat").elements["texto"]
  3.     var textarea = nodo.value;
  4.     for(var i = 0; i < grocerias.length;i++){
  5.         regex = new RegExp("(^|\\s)"+grocerias[i]+"($|(?=\\s))","gi")
  6.         textarea = textarea.replace(regex, function($0, $1){return $1 + "#4@!@"});
  7.     }
  8.     nodo.value = textarea;
  9. }

Cuando lleguen los datos a la otra pagina o al servidor ya no va a mostrar las palabras en la lista.
Excelente aporte man
  #5 (permalink)  
Antiguo 09/06/2011, 14:23
Avatar de Aijoona
Colaborador
 
Fecha de Ingreso: mayo-2011
Ubicación: Buenos Aires
Mensajes: 779
Antigüedad: 13 años, 6 meses
Puntos: 343
Respuesta: Restringir de textarea groserias

Igualmente, si queres evitar las 'groserias', el diccionario debería estar del lado del servidor.
__________________
blog | @aijoona
  #6 (permalink)  
Antiguo 09/06/2011, 14:32
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 14 años, 5 meses
Puntos: 310
Respuesta: Restringir de textarea groserias

Cita:
Iniciado por InKarC
Código Javascript:
Ver original
  1. function filtro(){ 
  2.     var nodo = document.getElementById("chat").elements["texto"]
  3.     var textarea = nodo.value;
  4.     for(var i = 0; i < grocerias.length;i++){
  5.         regex = new RegExp("(^|\\s)"+grocerias[i]+"($|(?=\\s))","gi")
  6.         textarea = textarea.replace(regex, function($0, $1){return $1 + "#4@!@"});
  7.     }
  8.     nodo.value = textarea;
  9. }
Yo modificaría lo de dentro del for:
Código Javascript:
Ver original
  1. // ...
  2. for(var i = 0; i < grocerias.length;i++){
  3.     regex = new RegExp("\\b("+grocerias[i]+")\\b","gi")
  4.     textarea = textarea.replace(regex, function(txt){ return "@".repetir(txt.length); });
  5. }
  6. // ...
  7. String.prototype.repetir = function(n){
  8.  var i = 0, str = '';
  9.  while(i++ < n){ str += this; }
  10.  return str;
  11. }
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #7 (permalink)  
Antiguo 10/06/2011, 00:15
 
Fecha de Ingreso: noviembre-2005
Mensajes: 426
Antigüedad: 19 años
Puntos: 87
Respuesta: Restringir de textarea groserias

Código Javascript:
Ver original
  1. regex = new RegExp("\\b("+grocerias[i]+")\\b","gi")
Esto no sirve con palabras que comienzan por la letra eñe; ya que algunos caracteres especiales tienen problemas para ser reconocidos como inicio de una palabra.
Aunque la verdad el Regex mio tiene el problema de que no acepta comas ni puntos ni otros signos de puntacion basico; aqui quedaria aceptandolos:

Código Javascript:
Ver original
  1. regex = new RegExp("(^|\\s|[;,\\.\\\\?¿])"+grocerias[i]+"($|(?=(\\s|[;,\\.\\\\?¿])))","gi")

PD: Sip, en mi pais hay grocerias que comienzan por eñe, no se si en otros paises existan.

Última edición por InKarC; 10/06/2011 a las 10:11

Etiquetas: restringir, textarea
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 13:01.