Foros del Web » Programando para Internet » Javascript »

Problema al verificar Formulario! :(

Estas en el tema de Problema al verificar Formulario! :( en el foro de Javascript en Foros del Web. Hola amigxs! Tengo un problemilla con un formulario HTML que creé 8es el primero. Incluí este código JAVASCRIPT con la intención de que me verificase ...
  #1 (permalink)  
Antiguo 26/08/2010, 02:46
 
Fecha de Ingreso: agosto-2010
Mensajes: 13
Antigüedad: 13 años, 8 meses
Puntos: 0
Problema al verificar Formulario! :(

Hola amigxs!

Tengo un problemilla con un formulario HTML que creé 8es el primero. Incluí este código JAVASCRIPT con la intención de que me verificase que determinados campos estuvieran rellenos antes de enviarlo

Código:
<HEAD>

<script language="javascript">
    function comprobar()
    {
            var nombre = document.formulario.nombre.value;
            var email = document.formulario.email.value;
	                var entrada_dia = document.formulario.entrada_dia.value;
 			var entrada_mes = document.formulario.entrada_mes.value;
			var entrada_a&ntilde;o = document.formulario.entrada_a&ntilde;o.value;
            
			if (formulario.nombre.value == "")
            {
                    alert("Debes escribir tu nombre");
                    return false;
            }
 
            if (formulario.email.value == "@")
            {
                    alert("Debes poner tu direcci&oacute;n de email");
                    return false;
            }
			
			
            if (formulario.entrada_dia.value == "d&iacute;a")
            {
                    alert("Debes indicar un d&iacute;a de entrada");
                    return false;
            }
			
			  if (formulario.entrada_mes.value == "mes")
            {
                    alert("Debes indicar un mes de entrada");
                    return false;
            }
			
			if (formulario.entrada_a&ntilde;o.value == "a&ntilde;o")
            {
                    alert("Debes indicar un a&ntilde;o de entrada");
                    return false;
            }
			
			else {			
		    return true; 
			} 
    
	}

</script>

</HEAD>
siendo los valores los seleccionados por defecto en el formulario (para el año: "a&ntilde;o" , para el email: "@" etc).

Y luego a continuación en el formulario:

Código:
<form name="formulario" action="mailto:[email protected]?subject=Solicitud de Reserva desde direccion_del_web.com" method="post" enctype="text/plain" onSubmit="return comprobar()">
Y:

Código:
<input type="submit" value="Enviar Solicitud">
No he manejado apenas Javascript y el código lo saqué de un post de foro, pero me pareció bastante claro y limpio, y coincidía con otros del mismo tema que encontré. Pero....¡ aun dejando los campos en blanco, me abre directamente el gestor de correos en vez de darme las alertas y echarmelo para atrás!¿XQ?¿es por el "document" que debería tener un valor dado por mí, o es otra cosa?

Una manita please, ¡Gracias!

Mith
  #2 (permalink)  
Antiguo 26/08/2010, 03:08
Avatar de angelAparicio  
Fecha de Ingreso: julio-2009
Ubicación: Sevilla
Mensajes: 307
Antigüedad: 14 años, 9 meses
Puntos: 22
Respuesta: Problema al verificar Formulario! :(

¿Puedes poner el código completo. Faltan los inputs.

Por cierto, creo que este hilo debería ir en otro subforo, no en este.
__________________
Mis webs:
- Programador Web Autónomo
- Conciertos en Sevilla
  #3 (permalink)  
Antiguo 26/08/2010, 20:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Hola, mithmetallian.

Traslado el tema a una sección donde encaja mejor.
Tema trasladado desde la sección de Web general.

Saludos.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #4 (permalink)  
Antiguo 27/08/2010, 10:23
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema al verificar Formulario! :(

Hola:

Las partes if empiezan con formulario., y no se vé ninguna asignación del formulario real a ninguna variable de ese nombre... el arreglo fácil sería anteponerle document., pero como buena costumbre me parece mejor poner en la llamada el parámetro this, y en la función referenciar al formulario desde el nombre que hayas usado en la cabecera de la misma:

function validar(f)...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 30/08/2010, 01:54
 
Fecha de Ingreso: agosto-2010
Mensajes: 13
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema al verificar Formulario! :(

Hola!

gracias caricatos pero no se donde meter lo que me has explicado (como referenciar, donde meter el "this"...). os copio e codigo completo para que le echeis un ojo, seguramente haya varios fallos o ausencias que impiden que la funcion funcione:

Código:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//ES">
<HTML>
<HEAD>
<link rel="stylesheet" media="all" type="text/css" href="camping.css" /> 

<TITLE>Camping</TITLE>
 
<script language="javascript">
    function comprobar()
    {
            var nombre = document.formulario.nombre.value;
            var email = document.formulario.email.value;
			var entrada_dia = document.formulario.entrada_dia.value;
 			var entrada_mes = document.formulario.entrada_mes.value;
			var entrada_a&ntilde;o = document.formulario.entrada_a&ntilde;o.value;
            
			if (formulario.nombre.value == "")
            {
                    alert("Debes escribir tu nombre");
                    return false;
            }
 
            if (formulario.email.value == "@")
            {
                    alert("Debes poner tu direcci&oacute;n de email");
                    return false;
            }
			
			
            if (formulario.entrada_dia.value == "d&iacute;a")
            {
                    alert("Debes indicar un d&iacute;a de entrada");
                    return false;
            }
			
			  if (formulario.entrada_mes.value == "mes")
            {
                    alert("Debes indicar un mes de entrada");
                    return false;
            }
			
			if (formulario.entrada_a&ntilde;o.value == "a&ntilde;o")
            {
                    alert("Debes indicar un a&ntilde;o de entrada");
                    return false;
            }
			
			else {			
		    return true; 
			} 
    
	}

</script>


<script language="javascript">
<!--
function comprobar_email(txt){  
//expresion regular  
       var b=/^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/  
           
//comentar la siguiente linea si no se desea que aparezca el alert()  
        alert("Email " + (b.test(txt)?"":"no ") + "válido.")  
           
//devuelve verdadero si validacion OK, y falso en caso contrario  
        return b.test(txt)  
}  
//-->   
</script>

</HEAD>

<body>
	<div id="contenedor">	
		<div style="width:750px;height:137px;">
		<a name="arriba"></a>
			
		<div id="menu">
			<div style="text-align:center; height:50px;">
				<a href="web/spa/reserva_spa.html";><img src="imagenes/idioma_spa2.png"; alt="español"; style="border:none";/></a>
				<a href="web/eng/reserva_eng.html";><img src="imagenes/idioma_eng.png" alt="english"; style="border:none";/></a>			
			</div>
				<br>
			<div>
				<a href="web/spa/local_spa.html";>Localizaci&oacute;n</a>
				<br>
				<a href="web/spa/bungalows_spa.html";>Instalaciones</a>
				<br/>
				<a href="web/spa/precios_spa.html" target="_blank">Precios</a>
				<br>
				<br>
				<br>
				<br>
				<a href="web/spa/info_spa.html";>+info</a>
				<br />
				<a href="web/spa/reser_spa.html"; style id="boton_reservar">RESERVAR</a>			
			</div>
		</div>

		<div id="contenido">
		<h1 style="text-align:center;">Solicitud de Reserva</h1>
		<br>
		<form name="mas_info" action="mailto:[email protected]?subject=Solicitud de reserva desde c.com" method="post" enctype="text/plain" onSubmit="return comprobar()"> 
			
			<div style="background-color:#339933; padding:4px;">
				Nombre y Apellidos:
				<input type="text" size="50" name="nombre">
				<p>
				email:
				<input type="text" size="50" value="@" name="email">
			</div>
			<p>				
			<div style="background-color:#339933; padding:4px;">
				Tipo de estancia:
				<select name="tipo_estancia">
					<option>Bungalow Doble</option>
					<option>Bungalow Estudio</option>
					<option>Tienda Campa&ntilde;a</option>
					<option>Autocaravana</option>
				</select>
			</div>
			<br>
			<div style="background-color:#339933; padding:4px;">
				N&uacute;mero de adultos:
				<select name="adultos">
					<option>1</option>
					<option>2</option>
				
				</select>
				<p>
				N&uacute;mero de ni&ntilde;os:  
				<select name="adultos">
					<option selected="selected">0</option>
					<option>1</option>
					<option>2</option>
					
				</select>
				<br>(de 2 a 12 a&ntilde;os)
				<br>
				<br>
				<input type="checkbox" name="grupo">Grupo de 30 personas o m&aacute;s.
			</div>
			<br>
			<div style="background-color:#339933; padding:4px;">
			<span style="text-decoration:underline;">Extras</span>
			<br>
			<input type="checkbox" name="extras_coche">Autom&oacute;vil / N&uacute;mero de autom&oacute;viles:
			<select name="numero_coches">
				<option selected="selected">0</option>
				<option>1</option>
				<option>2</option>
			</select>
			<br>
			<input type="checkbox" name="extras_moto">Motocicleta / N&uacute;mero de motocicletas:
			<select name="numero_coches">
				<option selected="selected">0</option>
				<option>1</option>
				<option>2</option>
			</select>
			<br>
			<input type="checkbox" name="extras_luz">Conexi&oacute;n electrica 
			</div>
			<br>
			<div style="background-color:#339933; padding:4px;">
			Fecha de entrada deseada:
				<select name="entrada_dia">
					<option selected="selected">d&iacute;a</option>
					<option>1</option>
					<option>2</option>
					<option>3</option>
				</select>
				<select name="entrada_mes">
					<option selected="selected">mes</option>
					<option>enero</option>
					<option>febrero</option>
				</select>
				<select name="entrada_a&ntilde;o">
					<option selected="selected">a&ntilde;o</option>
					<option>2010</option>
					<option>2011</option>
				</select>
			<p>
			Fecha de salida prevista:
				<select name="salida_dia">
					<option selected="selected">d&iacute;a</option>
					<option>1</option>
					<option>2</option>
					<option>3</option>
				</select>
				<select name="salida_mes">
					<option selected="selected">mes</option>
					<option>enero</option>
					<option>febrero</option>
				</select>
				<select name="salida_a&ntilde;o">
					<option selected="selected">a&ntilde;o</option>
					<option>2010</option>
					<option>2011</option>
				</select>
			</div>
			<p>
			<div style="background-color:#339933; padding:4px;">
				Tel&eacute;fono de contacto*:
				<input type="text">
				<br><span style="font-size:12px;">*campo no obligatorio</span><br>
				<input type="checkbox">Deseo recibir tambi&eacute;n notificaci&oacute;n telef&oacute;nica.
				
			</div>
			<p>
			<div style="background-color:#339933; padding:4px;">
				Si desea hacer alguna indicaci&oacute;n, hagalo a continuaci&oacute;n:
				<p>
				<textarea cols="62" rows="8" name="comentario"></textarea>
				<p>
			</div>
			<p>
			<div style="font-size:12px;">*El IVA a aplicar es del 8%<p>Para completar la reserva deber&aacute; realizarse un ingreso del 50% del valor de la estancia a un n&uacute;mero de cuenta que le ser&aacute; facilitado una vez verificada la disponibilidad.
			<p>
			<div style="text-align:center">
				<input type="submit" value="Enviar Solicitud"> 
			</div>
			<p>
			<br>
			<br>
			
			
					
			</div>
		</form>
				
	</div>
</body>
</html>
he recortado algo el codigo xq me daba demasiado largo, pero sin tocar nada imprescindible. Muchas gracias a todxs (la funcion "comprobar email la voy a quitar porque ahora mismo para mi es como leer jeroglificos xDD). Gracias!!
  #6 (permalink)  
Antiguo 30/08/2010, 07:57
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Problema al verificar Formulario! :(

Yo veo varios errores. Que yo sepa, no se puede declarar una variable del tipo entrada_a&ntilde;o. Como tampoco puedes poner año, se suele poner ano, anyo, anno o directamete year. Supongo que tampoco puede haber un campo que se llame entrada_a&ntilde;o. En tu código yo sólo veo un form, que se llama mas_info, pero no hay ninguno que se llame formulario. Por tanto, o cambias el nombre, o cambias el código, o le asignas a la variable formulario el valor document.forms['mas_info']. Por otro lado, en los alert los códigos ASCII no sirven, es decir, si tú escribes mar&iacute;a, te saldrá mar&iacute;a, y no maría, por lo tanto pon directamente ñ y letras acentuadas. Por último, lo que te decí caricatos es hacer lo mismo que en la función comprobar_email(txt), es decir, dejar la función comprobar() en comprobar(frm), y cuado vayas a llamar a algún elemento del form, pones frm.elemento, y después en el onsubmit pones comprobar(this.form).
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 30/08/2010, 12:14
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al verificar Formulario! :(

Hola

Así
Cita:
onSubmit="return comprobar(this)"

function comprobar(f)
{
var nombre = f.nombre.value;
var email = f.email.value;
Ya no necesitas document.formulario
Cita:
Iniciado por _cronos2 Ver Mensaje
Yo veo varios errores. Que yo sepa, no se puede declarar una variable del tipo entrada_a&ntilde;o. Como tampoco puedes poner año, se suele poner ano, anyo, anno o directamete year.
Si que es posible, siempre y cuando no haya codificación utf-8
Cita:
function funcion() {
var año = "hola";
alert(año);
}
Cita:
Iniciado por _cronos2 Ver Mensaje
Y
Por otro lado, en los alert los códigos ASCII no sirven, es decir, si tú escribes mar&iacute;a, te saldrá mar&iacute;a, y no maría, por lo tanto pon directamente ñ y letras acentuadas.
Hay otras opciones antes de escribir esas letras "especiales"

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #8 (permalink)  
Antiguo 30/08/2010, 13:16
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: Problema al verificar Formulario! :(

Cita:
Si que es posible, siempre y cuando no haya codificación utf-8
Adler, la codificacion a escoger en un tanto irrelevante. quiero decir, lo importante es que (a) el conjunto de caracteres tenga los caracteres a utilizar y (b) que en el documento se indique el conjunto de caracter. o sea, el documento se puede escribir en utf-8 y las variables ser nombradas con cualquier caracter valido de acuerdo a las normas de javascirpt. si se cumple estos cuidados, el codigo deberia funcionar correctamente. la razon es que javascript internamente utiliza unicode para representar todos los caracteres posibles.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #9 (permalink)  
Antiguo 30/08/2010, 13:42
 
Fecha de Ingreso: agosto-2010
Mensajes: 13
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Problema al verificar Formulario! :(

Muchas Gracias a todxs!!!

finalmente, habeis logrado que mi formulario funcione :D
Gracias por la cita Adler, ha sido la clave.

Proximo objetivo, aprender a hacerlos en PHP (o me recomendais otro lenguaje??) pero de momento me doy por mas que satisfecho...aquello es harina de otro costal. Thankes!
  #10 (permalink)  
Antiguo 30/08/2010, 14:22
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al verificar Formulario! :(

Hola
Cita:
Iniciado por zerokilled Ver Mensaje
Adler, la codificacion a escoger en un tanto irrelevante. quiero decir, lo importante es que (a) el conjunto de caracteres tenga los caracteres a utilizar y (b) que en el documento se indique el conjunto de caracter. o sea, el documento se puede escribir en utf-8 y las variables ser nombradas con cualquier caracter valido de acuerdo a las normas de javascirpt. si se cumple estos cuidados, el codigo deberia funcionar correctamente. la razon es que javascript internamente utiliza unicode para representar todos los caracteres posibles.
Hablo desde lo que me ocurre a mí, si uso utf-8,16 o 32 obtengo "illegal charater" pero si uso iso, ningún problema

Un saludo
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 30/08/2010, 14:51
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: Problema al verificar Formulario! :(

si el codigo esta dentro del documento html, no deberias tener problema. ahora bien, si es un archivo js, en el elemento <script> tienes que indicar el charset en que esta codificado el archivo js si es que este es diferente al documento html que carga el archivo js. de lo contrario, el navegador interpreta el codigo js con la misma codificacion utilizada en el documento html. puede que ese sea tu caso.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #12 (permalink)  
Antiguo 30/08/2010, 15:04
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al verificar Formulario! :(

El script está en el archivo, no es un archivo .js. Por seguir con el ejemplo, me levanta el error que te mencionaba
Cita:
<!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></title>
<script type="text/javascript">
function funcion() {
var año = 'hola';
alert(año);
}

funcion();
</script>
</head>
<body>
</body>
</html>
¿Extraño? Pues sí. Pero uso iso, no me levanta error
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #13 (permalink)  
Antiguo 30/08/2010, 16:01
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: Problema al verificar Formulario! :(

¿extraño? pues tendre que coincidir contigo, solo que a mi me funciona bien tanto en chrome, iexplorer8, y firefox. aqui una prueba con el mismo codigo que has mostrado. http://coffeescript.awardspace.com/utf8.htm, http://coffeescript.awardspace.com/utf16.htm
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 30/08/2010 a las 16:17
  #14 (permalink)  
Antiguo 30/08/2010, 16:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al verificar Formulario! :(

Me he sorprendido por que he seguido tu liga desde FF y ha funcionado, después he probado con Opera, Chrome y IE8 y ha funcionado. Así que he vuelto a comprobarlo desde mis servidores, IIS y Apache, y solo me ha funcionado en IE8
Este es otro misterio como el @ChuloSoy
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #15 (permalink)  
Antiguo 30/08/2010, 16:23
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: Problema al verificar Formulario! :(

no estoy seguro porque mis nociones de comunicacion http son muy basicas, quizas sea que el servidor envia en el encabezado http la codificacion del documento. segun he leido -si es que lo he comprendido bien- que la codificacion enviada por el encabezado tiene mayor prioridad del que se indica en <meta>. no me creas, pero eso es lo que he entendido. tu caso puede ser que no este enviando la misma codificacion de tu documento.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #16 (permalink)  
Antiguo 31/08/2010, 03:51
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Problema al verificar Formulario! :(

Tienes razón en lo que dices, pero fíjate en este caso no se está enviando ningún encabezamiento header('content-type: text/html; charset:xxxxx);. De cualquier modo no es algo que me preocupe puesto que no uso la ñ ni vocales acentuadas en nombres de variantes, campos, ....
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />

Etiquetas: html, verificar, formulario
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 03:30.