Foros del Web » Programando para Internet » Javascript »

DOCTYPE contra javascript

Estas en el tema de DOCTYPE contra javascript en el foro de Javascript en Foros del Web. Hola: hace algunos días hice una consulta parecida y al final se arregló con unas simples comillas que faltaban, ahora no faltan y ha vuelto ...
  #1 (permalink)  
Antiguo 18/06/2008, 06:44
 
Fecha de Ingreso: abril-2007
Mensajes: 232
Antigüedad: 17 años
Puntos: 2
DOCTYPE contra javascript

Hola:
hace algunos días hice una consulta parecida y al final se arregló con unas simples comillas que faltaban, ahora no faltan y ha vuelto a aparecer este problema. El código del html es:

<!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=UTF-8" />
<title>Formulario Inmobiliaria</title>
<link rel="stylesheet" href="inmo.css" type="text/css" />
<!--[if lt IE 8]><link rel="stylesheet" href="inmoIE.css" type="text/css" title="" /><![endif]-->
<script type="text/javascript" src="comprobarCorreo.js"></script>
</head>
<body>
<div id="contenedor">
<div id="inmo">
<h1>Solicitud de informaci&oacute;n</h1>
<h2>Cumplimentar todas las casillas salvo la de Comentario que es opcional</h2>
<p>Una vez recibido el formulario le enviaremos la informaci&oacute;n por usted solicitada</p>
<form name="datos" action="formInmob.php" method="post" onsubmit="return comprobarCorreo();">
<input type="hidden" name="enviado" value="enviar" />
<p>Nombre:<input type="text" name="nombre" size=50 maxlength=20 /></p>
<p>Apellidos:<input type="text" name="apellidos" size=50 maxlength=30 /></p>
<p>Direcci&oacute;n:<input type="text" name="direccion" size=50 maxlength=50 /></p>
<p>E-mail:<input type="text" name="email" size=50 maxlength=50 /></p>
<p>Pa&iacute;s:<input type="text" name="pais" size=30 maxlength=30 /></p>
<p>Ciudad:<input type="text" name="ciudad" size=30 maxlength=30 /></p>
<p>Tel&eacute;fono:<input type="text" name="telefono" size=30 maxlength=30 /></p>
<p>Informaci&oacute;n sobre:<select name="informacion">
<option>Casas en alquiler</option>
<option>Casas en venta</option>
<option>Pisos en alquiler</option>
<option>Pisos en venta</option></select></p>

<p>Comentario:<textarea name="comentario" rows=10 cols=60></textarea></p>
<p><input class="boton" type="submit" name="Enviar" value="Enviar" /><input class="boton" type="reset" name="reset" value="Borrar" /></p>
</form>

</div>
</div>
</body>
</html>




y el del javascript es este:


function correo ()
{
expresion=/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|m il|museum|name|nato|net|org|pro|travel)$/;
resultado = expresion.test(this);
return resultado;
}

function comprobarCorreo ()
{

var fallo = false;
var falta = "";

if (datos.nombre.value == "") {
falta += "Falta su nombre.\n";
fallo = true;
}
if (datos.apellidos.value == "") {
falta += "Faltan sus apellidos.\n";
fallo = true;
}
if (datos.direccion.value == "") {
falta += "Falta su dirección.\n";
fallo = true;
}
if (datos.ciudad.value == "") {
falta += "Falta su ciudad.\n";
fallo = true;
}
if (datos.pais.value == "") {
falta += "Falta su país.\n";
fallo = true;
}
if (datos.telefono.value == "") {
falta += "Falta su número de teléfono.\n";
fallo = true;
}

String.prototype.correo = correo;

datos.email.value = datos.email.value.toLowerCase();
if (!(datos.email.value.correo())) {
falta += "El e-mail no parece correcto.\n";
fallo = true;
}

if (fallo) {
alert(falta);
return false;
}
else {
return true;
}
}



El problema es que cuando la página html tiene el <!DOCTYPE..... 1999/xhtml"> el javascript no funciona, y si se lo quito dejando la página empezando en <html> entonces si funciona. Alguna idea de porque este comportamiento?

Jorge H.
  #2 (permalink)  
Antiguo 18/06/2008, 09:04
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
Puntos: 834
Respuesta: DOCTYPE contra javascript

El problema es que datos está mal definido. Fijate así:
Código PHP:
//...
function comprobarCorreo ()
{
var 
datos=document.datos;
//... 

Última edición por Panino5001; 18/06/2008 a las 09:16
  #3 (permalink)  
Antiguo 19/06/2008, 01:36
 
Fecha de Ingreso: abril-2007
Mensajes: 232
Antigüedad: 17 años
Puntos: 2
Respuesta: DOCTYPE contra javascript

Hola:
gracias por responder. Ahora funciona solo la parte del email y no verifica los demás campos. Según Jslint está todo perfecto, aunque me dice que debo cambiar == por === pero aún así no funciona. Falta algo?.

Gracias. Jorge H.
  #4 (permalink)  
Antiguo 19/06/2008, 07:37
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
Puntos: 834
Respuesta: DOCTYPE contra javascript

Así funciona correctamente en explorer 6 y 7, ópera, firefox y safari:
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=UTF-8" />
<
title>Formulario Inmobiliaria</title>
<
link rel="stylesheet" href="inmo.css" type="text/css" />
<!--[if 
lt IE 8]><link rel="stylesheet" href="inmoIE.css" type="text/css" title="" /><![endif]-->
<
script>
function 
correo ()
{
expresion=/^[a-z0-9_-]+(.[_a-z0-9-]+)*@([_a-z0-9-]+.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|m il|museum|name|nato|net|org|pro|travel)$/;
resultado expresion.test(this);
return 
resultado;
}

function 
comprobarCorreo ()
{

var 
fallo false;
var 
falta "";
var 
datos=document.datos;
if (
datos.nombre.value == "") {
falta += "Falta su nombre.\n";
fallo true;
}
if (
datos.apellidos.value == "") {
falta += "Faltan sus apellidos.\n";
fallo true;
}
if (
datos.direccion.value == "") {
falta += "Falta su dirección.\n";
fallo true;
}
if (
datos.ciudad.value == "") {
falta += "Falta su ciudad.\n";
fallo true;
}
if (
datos.pais.value == "") {
falta += "Falta su país.\n";
fallo true;
}
if (
datos.telefono.value == "") {
falta += "Falta su número de teléfono.\n";
fallo true;
}

String.prototype.correo correo;

datos.email.value datos.email.value.toLowerCase();
if (!(
datos.email.value.correo())) {
falta += "El e-mail no parece correcto.\n";
fallo true;
}

if (
fallo) {
alert(falta);
return 
false;
}
else {
return 
true;
}
}

</script>
</head>
<body>
<div id="contenedor">
<div id="inmo">
<h1>Solicitud de informaci&oacute;n</h1>
<h2>Cumplimentar todas las casillas salvo la de Comentario que es opcional</h2>
<p>Una vez recibido el formulario le enviaremos la informaci&oacute;n por usted solicitada</p>
<form name="datos" action="formInmob.php" method="post" onsubmit="return comprobarCorreo();">
<input type="hidden" name="enviado" value="enviar" />
<p>Nombre:<input type="text" name="nombre" size=50 maxlength=20 /></p>
<p>Apellidos:<input type="text" name="apellidos" size=50 maxlength=30 /></p>
<p>Direcci&oacute;n:<input type="text" name="direccion" size=50 maxlength=50 /></p>
<p>E-mail:<input type="text" name="email" size=50 maxlength=50 /></p>
<p>Pa&iacute;s:<input type="text" name="pais" size=30 maxlength=30 /></p>
<p>Ciudad:<input type="text" name="ciudad" size=30 maxlength=30 /></p>
<p>Tel&eacute;fono:<input type="text" name="telefono" size=30 maxlength=30 /></p>
<p>Informaci&oacute;n sobre:<select name="informacion">
<option>Casas en alquiler</option>
<option>Casas en venta</option>
<option>Pisos en alquiler</option>
<option>Pisos en venta</option></select></p>

<p>Comentario:<textarea name="comentario" rows=10 cols=60></textarea></p>
<p><input class="boton" type="submit" name="Enviar" value="Enviar" /><input class="boton" type="reset" name="reset" value="Borrar" /></p>
</form>

</div>
</div>
</body>
</html> 
  #5 (permalink)  
Antiguo 19/06/2008, 09:58
 
Fecha de Ingreso: abril-2007
Mensajes: 232
Antigüedad: 17 años
Puntos: 2
Respuesta: DOCTYPE contra javascript

Hola:
funcionar funciona si está dentro de la misma página, pero yo quiero tener el js aparte en su propio archivo, y haciendo el cambio que me dijiste en un principio solo comprueba el correo.
Porque cuando se saca este código javascript a un archivo aparte y se enlaza desde la página html, aquel deja de funcionar?

Gracias de todos modos. Jorge H.
  #6 (permalink)  
Antiguo 19/06/2008, 11:53
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
Puntos: 834
Respuesta: DOCTYPE contra javascript

Aún puesto en un archivo externo funciona correctamente. Estás seguro de estar incluyendo todo el código que estás utilizando? Porque el problema parece estar en otro lado
  #7 (permalink)  
Antiguo 21/06/2008, 06:37
 
Fecha de Ingreso: abril-2007
Mensajes: 232
Antigüedad: 17 años
Puntos: 2
Respuesta: DOCTYPE contra javascript

Hola:
salvo por las etiquetas <script> y </script> de comienzo y final, está todo el código que además fue pasado por cortar y pegar. Lo he probado en varios navegadores y en local y remoto y solo me comprueba el correo. Si lo quieres ver en remoto está en http://www.jhmorales.es/cursoPHP/formInmo.html. Que falla?
  #8 (permalink)  
Antiguo 21/06/2008, 08:45
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
Puntos: 834
Respuesta: DOCTYPE contra javascript

En tu javascript no usás el operador de comparación == para comprobar, estás usando el operador de asignación =
No es lo mismo decir datos.nombre.value == "", que es preguntar si son iguales y esperar un verdadero o falso, que decir datos.nombre.value = "", que es forzar a que datos.nombre.value valga ""
En resumen, el código que mostrás es diferente del que usás realmente.
No es un tema de doctype, que sí puede afectar a javascript, pero no en un caso como este.

Última edición por Panino5001; 21/06/2008 a las 08:50
  #9 (permalink)  
Antiguo 21/06/2008, 10:35
 
Fecha de Ingreso: abril-2007
Mensajes: 232
Antigüedad: 17 años
Puntos: 2
Respuesta: DOCTYPE contra javascript

Hola:
a esto habrá que hacerle un exorcismo, no me funciona ni con =, ni con ==, ni con ===. Inclusive he copiado y pegado la versión que pusiste el 19 que está al comienzo del html y la he puesto en el archivo aparte y nada. Estoy por pensar que es algo de este ordenador. Pero que puede ser que deje funcionar parte de un js y otra parte no?. Seguiré investigando.

Ya he visto que has usado el formulario porque me ha llegado un email de solicitud de información. He probado en el ordenador de mi esposa y allí funciona correctamente el js. Que puede hacer que mi ordenador no permita el uso de una parte de un js y del resto si?

Última edición por JHMorales; 21/06/2008 a las 10:45
  #10 (permalink)  
Antiguo 21/06/2008, 10:53
 
Fecha de Ingreso: abril-2007
Mensajes: 232
Antigüedad: 17 años
Puntos: 2
Respuesta: DOCTYPE contra javascript

Hola:
Ahora funciona bien, pensaba que era el wampserver porque al apagarlo ha funcionado bien el js, pero lo he vuelto a encender y sigue bien. Lo del exorcismo queda pendiente por si vuelve a salir con esto el ordenador, porque sigo sin saber el porque no iba. Gracias de todos modos. Suerte. Jorge H.
  #11 (permalink)  
Antiguo 21/06/2008, 11:41
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
Puntos: 834
Respuesta: DOCTYPE contra javascript

Nada de exorcismos, simplemente hay que vaciar la caché de cuando en cuando, que ese seguro era el problema
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 16:36.