Foros del Web » Programando para Internet » Javascript »

Impedir que se escriba un correo en un textarea

Estas en el tema de Impedir que se escriba un correo en un textarea en el foro de Javascript en Foros del Web. Hola, Tengo un formulario de registro en el que hay un textarea para escribir una presentación. Necesito que cuando valide el formulario, compruebe que no ...
  #1 (permalink)  
Antiguo 13/03/2013, 07:47
Avatar de Lucieta86  
Fecha de Ingreso: noviembre-2010
Mensajes: 45
Antigüedad: 14 años
Puntos: 1
Pregunta Impedir que se escriba un correo en un textarea

Hola,
Tengo un formulario de registro en el que hay un textarea para escribir una presentación. Necesito que cuando valide el formulario, compruebe que no se ha escrito ningun correo y ninguna web en el textarea.

Esto es lo que tengo hasta ahora:

Código HTML:
Ver original
  1. <textarea class="inpuut_negro" name="presentate" type="textarea" id="presentate" rows="3" cols="20" size="50" MAXLENGTH="200"/><?php echo $artistas['presentate'];?></textarea>
  2.  
  3.  <input type="submit" value="" class="estilo_boton" id="modificarInfo"/>

Código Javascript:
Ver original
  1. $("#modificarInfo").click(function (){
  2.             var palabras = ["\.es", "www\.", "@"];
  3.             var aux = $("#presentate").val();
  4.             var textarea=aux.split(' ');//Obtiene el texto y separa cada palabra por comas.
  5.             for(var i = 0; i < palabras.length;i++){
  6.                 for(var j=0; j<textarea.length; j++){
  7.                     if(textarea[j].match(palabras[i])){
  8.                         alert("No puede escribir " + textarea[j] + ". Porfavor modifique el texto");
  9.                         return false;
  10.                     }
  11.                 }  
  12.             }
  13.         });



El problema está que de este modo tampoco deja escribir paralabras como "artes", por poner un ejemplo.

EDITADO:
He encontrado esta opción:
Código Javascript:
Ver original
  1. var palabras = ["@", "/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/", "/^[a-zA-Z0-9.-]+\.([a-zA-Z]{2,4})+$/", "/^\w+([\.-]?\w+)*(\.\w{2,4})+$/", "www.", "/^(ht|f)tps?:\/\/\w+([\.\-\w]+)?\.([a-z]{2,3}|info|mobi|aero|asia|name)(:\d{2,5})?(\/)?((\/).+)?$/i", "/^\w*\.\w{2,4}$/" ];

Es muy probable que sobren expresiones regulaes, pero almenos asi funciona medianamente bien, aunque sigue dejando escribir webs cuando no empiezan por www., por ejemplo pepito.com, y eso tambien me gustaria no permitirlo.
Si hay alguien que entienda de expresiones regulaes y me puede ayudar a amoldar la mia a lo que necesito, lo agradeceria.

Alguna idea? Ya no se que cambia.

Gracias! :)

Última edición por Lucieta86; 13/03/2013 a las 08:49
  #2 (permalink)  
Antiguo 13/03/2013, 12:49
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: Impedir que se escriba un correo en un textarea

Si ese el caso, yo lo haría más genérico.
En una situación real, en tu formulario, que necesidad habría de que los usuarios escribiesen http:// ó ftp:// ó https:// más que para ingresar una url?, idem para que escriban [email protected] sin importar mucho si son correos ó url válidas.
Distinto sería si vos si permitieses que se escriban urls y emails y quizieras validar si lo hicieron correctamente. Por tu comentario entiendo que tu idea es que ni las escriban

Entonces

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml">
  4. <title>titulo</title>
  5. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  6.  <script type="text/javascript">
  7.  
  8. function validar(){
  9. var mensaje = document.getElementById('mensaje').value;
  10. var formato_email = /\w+@\w+\.\w+/;
  11. var url = mensaje.match(/(ftp|http|https):\/\//gi);
  12. var v_email = formato_email.test(mensaje);
  13.  
  14. if((v_email == true)||(url != null)){
  15. alert('hay email ó url');
  16. return false;
  17. }
  18.  
  19. /// Si no hubo ningún error, el form se procesa
  20.  
  21. alert('proceso');
  22.  
  23. }
  24.  
  25. </script>
  26. </head>
  27. <div>
  28. <form action="#" onsubmit="return validar();">
  29. <textarea rows="5" cols="100" id="mensaje"></textarea><br />
  30. <input type="submit" class="boton" value="enviar" />
  31. </form>
  32. </div>
  33. </body>
  34. </html>
usas como dije, 2 expresiones muy genéricas

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #3 (permalink)  
Antiguo 14/03/2013, 06:17
Avatar de Lucieta86  
Fecha de Ingreso: noviembre-2010
Mensajes: 45
Antigüedad: 14 años
Puntos: 1
Respuesta: Impedir que se escriba un correo en un textarea

He intentado amoldar el resultado que tu me das a lo que yo habia hecho, y no funciona como quiero. De todos modos, muchas gracias!

Efectivamente, me da igual que la url o el mail sea correcto. Lo normal es que la gente ponga miweb.com, o algo asi, sin el www. delante ni http... y eso es lo que me está costando de impedir que escriban.

Alguna idea mas?

Saludos

Etiquetas: correo, formulario, impedir, input, php, 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 19:53.