Foros del Web » Creando para Internet » HTML »

submit() al presionar ENTER

Estas en el tema de submit() al presionar ENTER en el foro de HTML en Foros del Web. Hola. Tengo un problema con un formulario. Es una pagina donde los usuarios se logean, por ahora, solo con su DNI (nro de documento). Por ...
  #1 (permalink)  
Antiguo 26/10/2007, 15:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
formulario que se envia solo

Hola.
Tengo un problema con un formulario. Es una pagina donde los usuarios se logean, por ahora, solo con su DNI (nro de documento). Por lo tanto tengo una INPUT como el siguiente

Código:
<input name="dni" type="text" class="input" />
y en vez de un "button" tengo un link realizar la comprobacion y enviar (si es correcto el DNI) al usuario a otra pagina. El link tiene este codigo

Código:
<a href="javascript:login()" class="link4" >[aceptar]</a>
llama a una funcion que verifica un par de cosas y manda o no el formulario.
El tema es que si escribo algo en el INPUT y presiono ENTER, se me envia el formulario, sin pasar por la comprobacion.
Ya probe poniendo el onSubmit="return login()" en el FORM, pero no.
No entiendo como se puede enviar el formulario al apretar la tecla ENTER.

El codigo del formulario es el siguiente:

Código:
<form action="index.asp"  method="post" name="form1" onSubmit="return login()">
Si le saco el action (se lo defino en la funcion de login() despues), me hace lo mismo, exceptoi que me manda a una pagina de error (no se puede encontrar la pagina)

¿¿¿Alguien sabe como desactivar esto???

Saludos
__________________
Nadie nacío sabiendo...
  #2 (permalink)  
Antiguo 26/10/2007, 16:33
 
Fecha de Ingreso: julio-2005
Mensajes: 8
Antigüedad: 19 años, 4 meses
Puntos: 2
Re: formulario que se envia solo

tal vez poniendo:

Código:
onsubmit="return false"
evita que se envie, claro que tendrias un problema: Si los usuarios tienen deshabilitado el javascript, tu comprobación se la pasa por los huevos.

te recomiendo k mejor en tu link pongas
Código:
<a href="javascript:void(0)" onclick="javascript:document.NombredeTuFormulario.submit();" class="link4" >[aceptar]</a>
y en tu formulario si poner:
Código:
onSubmit="return login()"
y en tu funcion
Código:
function login(){

//comprobaciones.......

//si todo esta bien
return true;

//si hay algo mal
return false;



}

aunque recuerda siempre comprobar del lado del servidor....
  #3 (permalink)  
Antiguo 27/10/2007, 02:39
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Re: formulario que se envia solo

Hola:

Cuando se hace submit desde el método del mismo nombre del formulario, no tiene sentido el manejador de eventos del mismo nombre, porque se activa cuando se envía mediante algún botón submit... siempre es aconsejable usar un botón del mismo nombre por cuestiones de accesibilidad ... siempre puedes darle al botón "aspecto" de enlace con estilos...

Si todos modos insistes en usar un link forzando el envío, te recomiendo que sigas con tu sistema y en el link pongas algo así:

<a href="javascript: if (login(document.form[0]) document.forms[0].submit())"

Siempre haciendo que login devuelva false para cancelar... y como ya te han puesto, volver a validar en el server (por si las moscas)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 29/10/2007, 09:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Desacuerdo Re: formulario que se envia solo

bueno, ya me tiene hasta las orejas este tema, no puedo solucionarlo. Probe lo que errorserver y nada, a caricatos mucho no lo entendi (perdon, no estoy tan avanzado en HTML / Javascript), pero desisti del link y puse un button (primero submit y siguio igual, luego normal y siguio igual)
les dejo el codigo que tengo para ver si alguien ve donde esta el error (4 ojos ven mas que 2, y mil mas que 4)

FORM
Código:
<form action="index.asp"  method="post" name="form1" onSubmit="return login()">
<table width="50%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
            <td width="25%" align="right" class=" texto">dni</td>
            <td class=""><input name="dni" type="text" class="input" /></td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td
              <input type="button" name="Ingresar" id="Ingresar" value="Ingresar" onClick="return login()"></td>
          </tr>
        </table</form>
JAVAscript
Código:
var http_c = getHTTPObject(); // Creamos el objeto XMLHttpRequest

function login(){
		//alert(c)
		if(document.form1.dni.value == ""){
			alert('Especifique su numero de DNI');
		}
		else{
			if (http_c) {
			   http_c.open("POST", "login.asp", true);
			   http_c.onreadystatechange = handleHttpResponse_c;
			   http_c.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			   http_c.send("dni=" + document.form1.dni.value);
			}
		}
}

function handleHttpResponse_c() {
		var res
		if (http_c.readyState==1) {
			
		} 
		if (http_c.readyState == 4) { 
		   if (http_c.status == 200) { 
			  if (http_c.responseText.indexOf('invalid') == -1) {
						//document.getElementById("error").innerHTML = http_c.responseText
						res  = http_c.responseXML.documentElement;
						valor = res.getElementsByTagName('valor')[0].firstChild.data;
						alert(valor)
						switch(valor){
							case '1': 
								document.form1.action= "datos_personales.asp"
								document.form1.submit()
								return true
							   	break 
							case '2':
								alert('El DNI no se encuentra en nuestros registros')
								return false
								break
							case '3':
								alert('Hubo en problema en la busqueda de sus datos.Por favor, intente mas tarde.')
								return false
								break
						}
			  }
		   }
		}
}
__________________
Nadie nacío sabiendo...
  #5 (permalink)  
Antiguo 31/10/2007, 07:41
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Desacuerdo submit() al presionar ENTER

Hola, tengo una problemita con un formulario. El mismo consta solo de una caja de texto y un boton submit.
El formulario sirve para validar el ingreso de los usuarios a un sitio, solo que deben ingresar solo un dato (no user y pass, solo user). El tema es que al escribir en la caja de texto y presionar la tecla ENTER me envia el formulario, sin pasar por comprobaciones de javascript que tenga. Ya probe poner en el OnSubmit del formularios miles de cosas (return false, return funcion_javascript, etc) y nada.
Lo curioso es que agregue una caja de texto y ya no me lo hace. Es decir, con una sola caja de texto no funciona (se dispara submit() al presionar ENTER); con dos cajas de texto no me sucede.

Alguien sabe como y porque sucede esto?? No me parece logico, pero debe haber alguna explicacion me imagino. Y si alguien sabe como evitar que suceda, le agradecere me lo comunique.

Saludos!!!
__________________
Nadie nacío sabiendo...
  #6 (permalink)  
Antiguo 31/10/2007, 08:31
Avatar de PatomaS
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: En alguna otra parte
Mensajes: 4.656
Antigüedad: 20 años, 8 meses
Puntos: 63
Re: submit() al presionar ENTER

Hola

Primero, no debes repetir temas, entre otros motivos, porque es muy descortés con quienes te han ayudado, si estás resolviendo un asunto en un tema, sigue allí.

Por otro lado, no veo problema, es posible que tengas algún código que esté interfiriendo con lo que quieres hacer.

Aquí te dejo un código con la descripción que haces, una caja de texto y un botón, cuando presionas enter, se activa el javascript. En mi código no he hecho validaciones, solo he probado que se activa la función.

Está probado en firefox 2.0.0.8 en Linux, Explorer 6 en Linux, Explorer 6 en Windows y Opera 9.23 en LInux.

Código HTML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es">
<head>
	<style type="text/css">
		* {border: 0; margin: 0; padding: 0;}
		html,body { width: 100%; height: 100%; background-color: #fff; }
		#Base { width: 100%; height: 100%; background-color: #fff;}
		#dni {display: block; border: 1px solid #000; padding: 3px;}
		#boton {cursor: pointer;}
	</style>
	<script type="text/javascript">
		function validar_dni() {
			x = document.getElementById("dni").value;
			alert(x);
		}
	</script>
	<title>Pruebilla</title>
</head>
<body>
<div id="Base">
	<form method="post" action="javascript:validar_dni()" id="formulario">
		<p><input name="dni" type="text" id="dni" value="" /></p>
		<p><button type="submit" id="boton">enviar</button></p>
	</form>
</div>
</body>
</html> 
Felicidad
__________________
¡ hey, hou, hou, hey !
  #7 (permalink)  
Antiguo 31/10/2007, 08:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
De acuerdo Re: submit() al presionar ENTER

1º.- Muchas gracias por el codigo, lo voy a probar.
2º.- Mil disculpas por repetir el tema, pero no me parecio apropiado seguir con el anterior ya que no estaba en un foro adecuado, no me parecio que lo mio haya sido un problema de Javascript. Fue error mio haber incluido entre el codigo que mostre una funcion Javascript y entiendo que por eso lo han derivado a otro Foro.
Prometo que si el codigo que me pasaste soluciona mi problema, posteare el mismo (y el agradecimiento, por supuesto) en ambos foros.

Saludos, y gracias otra vez.
__________________
Nadie nacío sabiendo...
  #8 (permalink)  
Antiguo 31/10/2007, 08:58
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: submit() al presionar ENTER

Perfecto!!! funciono con el codigo que me paso PatomaS.
En realidad lo que funciono fue poner en el action del formulario el codigo action="javascript:validar()", donde validar es una funcion javascript.

Gracias!!!
__________________
Nadie nacío sabiendo...
  #9 (permalink)  
Antiguo 09/12/2008, 10:37
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: submit() al presionar ENTER

Hola.
Me queda la duda, luego de hacer el

<form method="post" action="javascript:validar_dni()" id="formulario">

como llamas al proceso que tiene que tomar la variable POST ?.
He probado de incluirlo en action, pero no me resulto:

action="return javascript:validar_dni(); procesar.php"


¿Cómo hago entonces para luego llamar al proceso en cuestión?

PD: creí mejor no abrir otro tema en el foro, pues solo se trata de agregar un dato más en este, aunque no se si he hecho bien.
  #10 (permalink)  
Antiguo 09/12/2008, 11:14
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: submit() al presionar ENTER

Lo llamas en validar_dni().
En mi caso lo hago por AJAX, pero estimo que si en la funcion validar_dni() le pones algo asi:

Código:
document.form1.action = 'procesar.php'
document.form1.submit()
una vez que hagas los controles pertinentes, te deberia funcionar
Aclaracion: form1 es el nombre del formulario.

Saludos, espero te sirva.
__________________
Nadie nacío sabiendo...
  #11 (permalink)  
Antiguo 09/12/2008, 15:06
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: submit() al presionar ENTER

gracias sanref, aunque aun sigo sin dar la solución final.
después de buscar un poco de ayuda en la web, sigo con problemas. estoy volviendome loco ahora con una sentencia que siempre me da error.

function validar_dato(){
if ( f_buscar.buscar.value.replace(/ /g, '') == '' )
{ alert ("Debe ingresar alguna palabra a buscar."); }
else
{
(*) var buscar:String = f_buscar.buscar.value;
// o var buscar:String = document.getElementById('buscar').value;
this.getURL("procesar.php", "_self", "POST");
}
}

El formulario se llama 'f_buscar'.
El texto input con valor se llama 'buscar'.
(*) es la línea que simpre me da error de que se esperaba ";"

Luego en el PHP tomaría la variable POST de la siguiente manera:
$b = _POST["buscar"];

alguna idea de que estoy haciendo mal?
  #12 (permalink)  
Antiguo 09/12/2008, 15:28
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: submit() al presionar ENTER

La verdad que no se mucho de Javascript. Te digo que veo en tu codigo que puede dar error.
Yo siempre nombro a los objetos del formulario con "document." antes, es tu caso llamaria al formulario como document.f_buscar....

---

No entiendo bien la sentencia donde te da error
var buscar:String = ....
Estimo que declaras una variable "buscar" como string, pero nunca vi esa definicion con los dos puntos. Yo lo declaro asi:

var buscar = document.f_buscar.buscar.value

----

Con respecto a tomar las variables POST en PHP, creo que es $_POST["buscar"]; pero no estoy seguro, yo trabajo mas que nada en ASP.

Espero encuentres la solucion, y si es asi, posteala asi nos enteramos.
Saludos
__________________
Nadie nacío sabiendo...
  #13 (permalink)  
Antiguo 09/12/2008, 15:49
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: submit() al presionar ENTER

Estaba probando justo con esos arreglos que mencionas, con lo que el código queda:

function validar_dato() {

if ( f_buscar.buscar.value.replace(/ /g, '') == '' )
{ alert ("Debe ingresar alguna palabra a buscar."); }

else
{
var buscar = document.f_buscar.buscar.value;
this.getURL("procesar.php", "_self", "POST");
}
}

Luego en el PHP tomaría la variable POST de la siguiente manera:
$b = $_POST["buscar"]; //había puesto mal.

Todo anda bien, excepto que la última sentencia:
this.getURL("procesar.php", "_self", "POST");

Que me tira el error:
Error: El objeto no acepta esta propiedad o método
Code: 0

y el php, no recibe la variable POST.


:: molesto:
  #14 (permalink)  
Antiguo 09/12/2008, 16:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 189
Antigüedad: 20 años, 5 meses
Puntos: 1
Respuesta: submit() al presionar ENTER

Código:
this.getURL("procesar.php", "_self", "POST");
tampoco conozco esa sentencia, yo lo haria asi:

Código:
document.f_buscar.action = "procesar.php";
document.f_buscar.method = "post";
document.f_buscar.submit()
saludos
__________________
Nadie nacío sabiendo...
  #15 (permalink)  
Antiguo 09/12/2008, 16:53
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: submit() al presionar ENTER

sanref !!!! ¿cómo que no sabes mucho de javascript?
FUNCIONA PERFECTO LO QUE ME HAS DICHO !!!!! GRACIASSSS!!!!!!!!!.

Entonces, resumiendo,
para poder validar que un INPUT text de un formulario HTML no se escape con valor vacío hacia un proceso (para el caso PHP), ni siquiera tras el usuario haber pulsado la tecla "enter", este es el código:


function validar_dato()
{
if ( f_buscar.buscar.value.replace(/ /g, '') == '' )
{ alert ("Debe ingresar alguna palabra a buscar."); }

else
{
var buscar = document.f_buscar.buscar.value;
document.f_buscar.action = "procesar.php";
document.f_buscar.method = "post";
document.f_buscar.submit()
}
}


el formulario debió quedar :

<form id="f_buscar" name="f_buscar" method="post" action="validar_dato()">
<input name="buscar" type="text" >



Gracias otra vez Sanref!!!!!!!!!!!!!!!!!!!
  #16 (permalink)  
Antiguo 12/12/2008, 14:48
 
Fecha de Ingreso: noviembre-2008
Mensajes: 288
Antigüedad: 16 años
Puntos: 2
Respuesta: submit() al presionar ENTER

Esta es otra posibilidad de resolver el tema. Probado en IE y Firefox:
( está en el foro, en el rubro Javascript, la dió panino5001: http://www.forosdelweb.com/f13/funci...7/#post2703345 )

<!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=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
<script>
function checkBuscar()
{
var x = document.f_buscar.buscar.value.replace(/ /g, '');
if( x == '' )
{
alert ("Debe ingresar alguna palabra a buscar.");
return false;
}
if( x.length < 3 )
{
alert ("Las palabras deben tener 3 o mas letras.");
return false;
}
}
</script>
</head>

<body>
<form id="f_buscar" name="f_buscar" method="post" action="procesar.php" onsubmit="return checkBuscar()">

<input type="Image" src="buscar.gif" >
<input name="buscar" type="text" >
</form>
</body>
</html>
  #17 (permalink)  
Antiguo 05/06/2013, 04:31
 
Fecha de Ingreso: junio-2013
Ubicación: Madrid
Mensajes: 5
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: submit() al presionar ENTER

Siento revivir el tema, pero tengo una duda con esto que se habla aquí.

Soy nuevo en el foro así que lo primero de todo buenas a todos!

Mi duda es que al poner el método que comentáis, tengo que darle dos veces al enter para que se envié un mensaje, si no no se envía.. si quito el script y pongo el action normal se envía sin problema, con solo 1 enter. ¿A qué puede deberse?

El código es el siguiente:

SCRIPT
Código:
		<script type="text/javascript">
				function validar_mensaje() {
					if(document.formulario.mensaje.value != ''){
						document.formulario.action = '<?php $self ?>'
						document.method = "post";
						document.formulario.submit()
					}
				else {}
				}
		</script>

Formulario
Código:
		<form action="javascript:validar_mensaje()" method="post" id="formulario" name="formulario">

				<input class="text" type="text" name="mensaje" id="mensaje"/>
				<input name="send" type="hidden" />
				<p><input type="submit" value="Enviar" id="enter" class="button" /></p>
Gracias!
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 17:27.