Foros del Web » Programando para Internet » Javascript »

Validar acentos y eñes

Estas en el tema de Validar acentos y eñes en el foro de Javascript en Foros del Web. Que tal compañeros, a ver si alguien puede ayudarme con un problemilla. Tengo que validar un formulario bastante extenso y ando peleándome con la codificación ...
  #1 (permalink)  
Antiguo 18/10/2007, 08:58
 
Fecha de Ingreso: octubre-2007
Mensajes: 7
Antigüedad: 16 años, 6 meses
Puntos: 0
Validar acentos y eñes

Que tal compañeros, a ver si alguien puede ayudarme con un problemilla.

Tengo que validar un formulario bastante extenso y ando peleándome con la codificación estos días. Intento que todo esté con UTF-8 y creía que todo estaba bien... la validación del lado servidor, con PHP, me funciona bien, pero me está dando problemas el código JS (que no domino mucho todavía).

Estoy usando el plugin jquery-plugin-validator para validar un campo que solo debe aceptar letras. Todo va bien hasta que me da por probar la ñ o carácteres acentuados, que entonces no me concuerda el patrón que utiliza esta librería.

Buscando por la ayuda del plugin no he visto a nadie con este problema, así que debe ser cosa mía. He ido reduciendo el código hasta quedarme con lo básico que me falla y es esto:

Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>

<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<script type="text/javascript" charset="utf-8">
		var value = "ñ";
		alert(/^[a-z]+$/i.test(value));
	</script>
</head>
<body>

</body>
</html>
Ese patrón es el que utiliza el plugin, y debería funcionar, pero no lo hace. No se si es problema de la codificación o de otra cosa, pero vamos... debe ser alguna tontería (espero).

Creo que ya está todo, si teneis alguna duda preguntad lo que querais.

Saludos y gracias por anticipado.

EDITO:
Usando la búsqueda... juro que la usé antes pero no encontré nada, he visto que alguien comenta que el patrón para validar letras, espacios y acentos es este: [a-z áéíóú].
Es correcta esta respuesta? aunque use UTF-8 no puedo usar simplemente el [a-z] típico?

Última edición por mass; 18/10/2007 a las 09:02 Razón: posible solución encontrada
  #2 (permalink)  
Antiguo 19/10/2007, 20:07
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Validar acentos y eñes

Hola mass, bienvenido.

Como bien dices la solución radicaría en añadir a la expresión regular todos aquellos caracteres que desees dar por válidos:

/^[a-z áéíóúñüàè]+$/i

Ese sería un ejemplo. La codificación UTF-8 nada tiene que ver con el motor de las expresiones regulares. Éste siempre interpreta [a-z] como un caracter del rango del abecedario anglosajón, es decir, sin tildes ni caracteres extraños (ni ñ..).


Bueno, espero que te aclare mi explicación.
Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
  #3 (permalink)  
Antiguo 22/10/2007, 01:30
 
Fecha de Ingreso: octubre-2007
Mensajes: 7
Antigüedad: 16 años, 6 meses
Puntos: 0
Re: Validar acentos y eñes

Gracias derkenuke. Claro que me aclara tu explicación, aunque he estado buscando información durante unas cuantas horas sobre el tema y creo que ya sé como hacerlo.

Hay que añadir el código hexadecimal del caracter que quieres añadir a la validación. Por ejemplo, la a acentuada sería \u00E1 y así sucesivamente. Encontrar los códigos es fácil así que no los pongo todos.

La verdad es que pensaba que sería más fácil usar utf-8, después de leer mil maravillas sobre esta codificación en varios sitios web me he encontrado problemas para validar con js, validar con PHP, insertar datos en mySQL... etc, etc. Pero bueno, supongo que es como todo, hasta que no le pillas el truquillo el proceso es lento.
  #4 (permalink)  
Antiguo 24/10/2007, 15:47
Avatar de derkenuke
Colaborador
 
Fecha de Ingreso: octubre-2003
Ubicación: self.location.href
Mensajes: 2.665
Antigüedad: 20 años, 6 meses
Puntos: 45
Re: Validar acentos y eñes

Hola de nuevo mass:

Ésto sí que te funciona, ¿verdad?
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" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">

</
style>
</
head>

<
body>


<
script type="text/javascript">
<!--

var 
re = /^[a-z áéíóúñüàè]+$/i;
document.writere.test("El ñandú comió kiwi ácaro pingüino") );

// -->
</script>

</body>
</html> 
Está en ISO 8859-1, me funciona bien, me escribe true en el documento. No tengo muy claro cómo funciona el UTF-8, pero lo que no sabía es que los códigos con tildes no funcionasen (a menudo escribo mis comentarios en los códigos con tildes...).

Muéstranos por favor un ejemplo de cómo realizarías mi código, es un buen dato a conservar.


Un saludo.
__________________
- Haz preguntas inteligentes, y obtendrás más y mejores respuestas.
- Antes de postearlo Inténtalo y Búscalo.
- Escribe correctamente tus mensajes.
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 17:23.