Ver Mensaje Individual
  #10 (permalink)  
Antiguo 21/03/2003, 19:39
Avatar de sci-fi
sci-fi
 
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 11 meses
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