Foros del Web » Programando para Internet » Javascript »

Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

Estas en el tema de Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota en el foro de Javascript en Foros del Web. Wenas. Pues tras muchos dias de comerme mucho el coco, e intentado varias formas de tratar de verificar si en un campo de texto se ...
  #1 (permalink)  
Antiguo 29/09/2009, 07:19
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

Wenas. Pues tras muchos dias de comerme mucho el coco, e intentado varias formas de tratar de verificar si en un campo de texto se a escrito alguna palabrota. Pero como mucho lo que mas me he acercado a sido con alertas. Cuando ponia x ejemplo la palabra sola "Gilp*llas" (la palabra entera logicamente)me salian alertas por cada elemento k tenia en el array, entonces saltaba alerta d k abia encontrao, pero si pongo un texto y despues el insulto no me detecta que haya un inuslto.. no se si me explico. Tengo una hoja de javascript aparte, que luego en el form llamo la funcion correspondiente. Lo que pretendo hacer es que en le campo del formulario, en este caso un input, es que si contiene una palabrota(las cuales almaceno en un array), pues que salte una alerta de k se escribio una palabrota y no se envie el formulario, k solo se envie si no ay palabrotas.
Esta es la hoja de javascript:
Código:
//funcion general-->Block_Insult();
var array_insultos= new Array("insuto1","insuto2","insuto3","insuto4","insuto5","insuto6","insuto7","insuto8","insuto9","insuto10","insuto11","insuto12","insuto13","insuto14","insuto15","insuto16","insuto17","insuto18");
function Block_Insult(){
	for (i=0;i<array_insultos.length;i++){
if(document.ideas.idea.value==array_insultos[i]){
	alert("Has escrito una palabrota!");
	}else{
alert("No se encontraron palabrotas");
	}
}
}
y el formulario es este:
Código:
<form name="ideas" action="ideas.php" method="post" onsubmit="Block_Insult();">
<font color=ffffff size=2>¿Qué le pondrias o como mejorarias la página?:<input type="text" name="idea"><input type="submit" value="Enviar idea">
El codigo de javscript se k lot engo mal, por eso pido si alguien puede ayudarme con mi idea, muchisimas gracias :)
  #2 (permalink)  
Antiguo 29/09/2009, 07:57
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

Código javascript:
Ver original
  1. var array_insultos= new Array("insuto1","insuto2","insuto3","insuto4","insuto5","insuto6","insuto7","insuto8","insuto9","insuto10","insuto11","insuto12","insuto13","insuto14","insuto15","insuto16","insuto17","insuto18");
  2. function Block_Insult(el){
  3.     var arr = array_insultos.join("|");
  4.     var reg = new RegExp(arr,"i");
  5.     if(reg.test(el.idea.value)){
  6.         alert("Has escrito una palabrota!");
  7.         return !1
  8.     }
  9.     return true
  10. }

Código HTML:
<form name="ideas" action="ideas.php" method="post" onsubmit="return Block_Insult(this)">
<font color=ffffff size=2>¿Qué le pondrias o como mejorarias la página?:<input type="text" name="idea"><input type="submit" value="Enviar idea"> 
En fin no sirve, puedo desactivar Javascript por un momento y el formulario se envia sin problemas, mejor es que lo valides en php, y reemplazar las palabras malas por ***
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #3 (permalink)  
Antiguo 29/09/2009, 08:02
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

edit @ 9:02, ignorar este mensaje, se me adelantaron. saludos!
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #4 (permalink)  
Antiguo 29/09/2009, 08:49
Avatar de America|UNK  
Fecha de Ingreso: noviembre-2006
Ubicación: Piura - Perú
Mensajes: 582
Antigüedad: 17 años, 5 meses
Puntos: 56
Respuesta: Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

Cita:
Iniciado por zerokilled Ver Mensaje
edit @ 9:02, ignorar este mensaje, se me adelantaron. saludos!
Tal vez también le interese tu solución, a menos que sea igual.
__________________
/* El que atiende, entiende..., el que entiende, aprende!.
Desarrollo Web Freelance, Contactar */
  #5 (permalink)  
Antiguo 29/09/2009, 08:53
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

era practicamente la misma, aunque mas bien teorico. pero el producto final es con menos codigo.

mensaje original,
Cita:
para mi, expresiones regulares siempre ha sido la solucion por excelencia aunque hay para quienes le parece muy complicado. lo que tienes que hacer es lo siguiente, en una variable vas a escribir a manera de un string con todos los insultos. la unica diferencia es que las comillas las vas a reemplazar por una diagonal (/) al principio y al final. entre medio de cada palabra pones una barra vertical (|). y justo al final de todo, despues de la diagonal, escribe una i. o sea, te quedara algo como variable = /palabra|palabra|palabra|.../i. esta porcion reemplazaria el array de insultos.

luego, en lugar de usar un bucle, utilizas el metodo test de la expresion regular y le pasas como argumento el string del campo. este te devolvera un boolean donde true significa que encontre una palabra y false que no encontro alguna palabra. y finalmente, ese boolean lo devuelves al inverso con el operador not (!). el proposito es, que al test devolver true, es decir encontro un insulto, al invertirse con not se cancela el evento de enviar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #6 (permalink)  
Antiguo 29/09/2009, 09:47
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

gracias por todas vuestras respuestas =), pero aun no lo tengo del todo claro.. para emepzar no sabia que exisitia tales funciones como "RegExp" y .test .. jeej megustaria saber si es posible k pongais un ejemplo como sería en codigo una mezcla entre el de America|UNK y zerokilled =). Gracias sobre todo por vuestros aportes!
  #7 (permalink)  
Antiguo 29/09/2009, 10:43
Avatar de didix16  
Fecha de Ingreso: agosto-2009
Mensajes: 19
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Ayuda xfavor verificar si un campo de texto se a escrito alguna palabrota

Jejej ya consegui lo que pretendia hacer!!! Lo dejo aqui por si alguien esta interesado en el codigo =))
Código:
//funcion general-->Block_Insult();
var array_insultos= new Array("insuto1","insuto2","insuto3","insuto4","insuto5","insuto6","insuto7","insuto8","insuto9","insuto10","insuto11","insuto12","insuto13","insuto14","insuto15","insuto16","insuto17","insuto18");

function Block_Insult(){
    var arr = array_insultos.join("|");
    var reg = new RegExp(arr,"i");
    if(reg.test(document.ideas.idea.value)){
        alert("Has escrito una palabrota!");
	}else{
		alert("No se encontraron palabrotas");
		document.ideas.enviar.submit;
    }
  return true

}
y el form es:
Código:
<form name="ideas" action="ideas.php" method="post" onsubmit="Block_Insult();">
<font color=ffffff size=2>¿Qué le pondrias o como mejorarias la página?:<input type="text" name="idea"><input type="submit" name="enviar" value="Enviar idea"></font>
Creditos para America|UNK y zerokilled =)

Última edición por didix16; 29/09/2009 a las 10:49
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 11:06.