Foros del Web » Programando para Internet » Javascript »

anular tecla "return" en formulario

Estas en el tema de anular tecla "return" en formulario en el foro de Javascript en Foros del Web. Hola, tengo un formulario con un simple campo de texto, donde el cual ejecuta una busqueda en una base de datos hecha con Asp. Resulta ...
  #1 (permalink)  
Antiguo 21/03/2003, 07:42
 
Fecha de Ingreso: enero-2002
Mensajes: 55
Antigüedad: 22 años, 4 meses
Puntos: 0
[Resuelto] anular tecla "return" en formulario

Hola, tengo un formulario con un simple campo de texto, donde el cual ejecuta una busqueda en una base de datos hecha con Asp.
Resulta que este buscador me va perfectamente, excepto cuando cuando el usuario pulsa la tecla "return", o sea si el usuario pulsa el boton buscar del formulario me va bien, pero si le da a la tecla "return" me va mal.

Hay alguna posibilidad de anular la tecla "return" de ese campo, o sea que tenga que pulsa el "boton" siempre.


Muchas gracias.

Última edición por KarlanKas; 24/03/2003 a las 04:00
  #2 (permalink)  
Antiguo 21/03/2003, 11:56
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
Re: Anular "Intro" en formulario.

poupurri:

Mejor que anular, ¿por qué no haces que la pulsación de la tecla [Intro] tenga el mismo efecto que la pulsación del botón?

<form ... onsubmit="lomismoqueelbotón; return false;">

Muchas personas, yo mismo, tenemos la costumbre de, al usar buscadores, teclear la entrada a buscar y pulsar [Intro]. Es más cómodo y te ahorras el tiempo de volver a coger el ratón.

Saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #3 (permalink)  
Antiguo 21/03/2003, 16:02
 
Fecha de Ingreso: enero-2002
Mensajes: 55
Antigüedad: 22 años, 4 meses
Puntos: 0
lo que pasa es que el boton no tiene codigo, el boton buscar es el que envia los datos del formulario a otra pagina que es la que hace la busqueda, el codigo del boton es: <input type="submit" name="Submit2" value="BUSCAR">
el formulario es del tipo: <form name="formbuscador" method="get" action="resultado.asp">


En teoria, creo, al darle la tecla "return" envia los datos del formulario, igual que si le das al boton Submit2, tendria que ser lo mismo. pero si le doy al boton me va bien, y si lo hago mediante "return" me da error.

  #4 (permalink)  
Antiguo 21/03/2003, 16:09
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
Pregunta Re: "Submit" e [Intro]

popurri:

Si el botón es como dices, de tipo submit, y según la definición que das al formulario, efectivamente deberían hacer lo mismo el botón y la tecla [Intro].

Comentas que pulsando [Intro] se produce un error, ¿Podrías indicar cual es?

Saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #5 (permalink)  
Antiguo 21/03/2003, 16:15
 
Fecha de Ingreso: enero-2002
Mensajes: 55
Antigüedad: 22 años, 4 meses
Puntos: 0
aqui esta el error, aunque no creo que sirva de mucho, es un error de Asp, al ejecutara la consulta da error:
ADODB.Recordset error '800a0bb9'

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

/resultado.asp, line 85


no se, es como si el return le añadiera algun caracter raro, que le hiziera fallar. Pero es raro.
  #6 (permalink)  
Antiguo 21/03/2003, 16:33
 
Fecha de Ingreso: enero-2002
Mensajes: 55
Antigüedad: 22 años, 4 meses
Puntos: 0
acabo de ver la diferencia que hay, si lo envio con la tecla return me envia "http://pagina.com/resultado.asp?textobuscador=barcelona"

y si lo hago con el boton submit2

"http://pagina.com/resultado.asp?textobuscador=barcelona&Submit2=BUSC AR"

al pulsar return como no me envia el "Submit2=BUSCAR" y esto me hace fallar la consulta, por que utilizo esta variable para el control de mi consulta.

Hay alguna forma para que al pulsar la tecla return me añada el "Submit2=BUSCAR" si no pues tendre que pelearme en modificar la consulta que es un rollo de codigo, pero bueno supongo que sera lo mejor.


Gracias por ayudarme
  #7 (permalink)  
Antiguo 21/03/2003, 16:38
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
Sonrisa Re: Enviar variable oculta

Puedes colocar en el formulario el valor oculto:

<input type="hidden" name="Submit2" value="BUSCAR">

Saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #8 (permalink)  
Antiguo 21/03/2003, 16:58
 
Fecha de Ingreso: enero-2002
Mensajes: 55
Antigüedad: 22 años, 4 meses
Puntos: 0
joooooo , lo he probado pero ahora me ocurre lo contrario, con el "return" me funciona, pero con el boton me da el mismo error de antes, supongo que es por que ahora me envia 2 veces el valor "submit2=BUSCAR",


perdonad por mi incompetencia, ya que al final la solucion no es utilizar el Javascript. Ya mirare de tocar la consulta para arreglarlo.


Graxiassssss
  #9 (permalink)  
Antiguo 21/03/2003, 17:08
Avatar de mikel_gomez  
Fecha de Ingreso: febrero-2001
Mensajes: 482
Antigüedad: 23 años, 2 meses
Puntos: 3
Re: Anular tecla [Intro] en formulario.

poupurri:

No sé de donde te saldrá el Submit2.

De todas formas, sobre tu pregunta original y en caso de que te siga interesando, revisa la siguiente dirección del sitio Java Guru donde se explica como controlar la tecla [Intro] en Explorer y Netscape. A pesar de todo, sigo pensando que es mejor evitar este método.

Suerte y saludos.
__________________
Mikel Gómez
Hay que aprender mucho para saber poco

  #10 (permalink)  
Antiguo 21/03/2003, 19:39
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 0
hola,

[mikel_gomez]
Cita:
A pesar de todo, sigo pensando que es mejor evitar este método.
También opino lo mismo... He visto sitios que omiten el <input type="submit"> o utilizan submit() en javascript con imágenes en reemplazo del input, de forma que solamente se puede utilizar el mouse o solamente se puede realizar el submit con javascript, y si da un error javascript, no se puede enviar el formulario! (esto me pasó en un sitio) Creo que demasiado sitios hacen esto con los formularios, y me parece que es un error

Para solucionarlo creo que no hay opción con respecto a modificar el código ASP para tener en cuenta al campo generado por el input, para excluirlo de la búsqueda (también tendrías que hacerlo aunque cambiaras de GET a POST)

Si no, tienes dos opciones, pero *no* deberían ser usadas, o al menos las podrías usar solo provisoriamente hasta que modifiques el código ASP; una en JavaScript, otra con HTML.

Con HTML, reemplaza el <input type="submit"> por un <input type="button" value="Buscar" onClick="document.forms[0].submit();"> (no muy bueno; no funciona en todos los navegadores). O prueba quitándole el atributo "name" al submit (esto no lo testeé), para que no se pase automáticamente un campo "Submit2". También se podría reemplazar al input de submit por un <input type="image" src="url de imagen" border="0" width="ancho" height="alto" onClick="document.forms[0].submit();">, pero acá si hay un error javascript o javascript está deshabilitado, el formulario no será enviado! todos éstos son ejemplos de mal diseño de formularios, de paso sea dicho

En JavaScript (solamente a partir de la versión 1.2): detectar que la tecla enter ha sido presionada con un evento y hacerle un return false al formulario; con este código (después del formulario HTML):

Código:
<script type="text/javascript">

var formulario = document.forms[0];

var botonEnviar = formulario['Enviar']; // suponiendo que el input de submit tenga name="Enviar"

var enviar;

formulario.onkeypress = function ( ) { if (event.keyCode) { enviar = event.keyCode; } else { enviar = event.which; } }

formulario.onsubmit = function ( ) { if (enviar == 13) { return false;} }

</script>
Este código evitará que al presionar enter, se envíe el formulario, pero no si se le hace click con el mouse. Pero tiene una *gran* desventaja: si por alguna casualidad, la última tecla presionada fue Enter, el formulario tampoco se enviará utilizando el mouse! Esto se debe a que en realidad, al apretar Enter y enviar el formulario, se están realizando *dos* eventos simultáneamente: onkeypress en el teclado y onsubmit en el elemento html del formulario... así que por ahora no se me ocurre otra forma de controlar los dos eventos que escribiendo/sobreescribiendo una var ("enviar") si la tecla Enter ha sido la última en haber sido presionada, lo que puede coincidir o no con el hecho de haber sido apretada para enviar el form

saludos
__________________
webdeveloper
http://www.javascripters.com.ar/
diseño web y tecnología

Última edición por sci-fi; 21/03/2003 a las 23:03
  #11 (permalink)  
Antiguo 23/03/2003, 12:50
 
Fecha de Ingreso: enero-2002
Mensajes: 55
Antigüedad: 22 años, 4 meses
Puntos: 0
Gracias a todos por buestros buenos consejos. Al final me decante por modificar mi pagina Asp, cambie algunas condiciones que tenia en ella y ya me funciona.




Graxias!!!!!
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 09:59.