Ver Mensaje Individual
  #2 (permalink)  
Antiguo 18/02/2018, 11:02
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: enlace en un boton de formularuio

Cuando el formulario no tiene definido un valor para el atributo action, el procesamiento de los datos contenidos en los campos que se encuentran dentro de este, se realiza en la misma página, recargándose la ventana.

Lo que necesitas es cancelar el envío, ya sea mediante un retorno del valor booleano false (return false) o el uso del método .preventDefault(). Una vez hecho esto, en la función puedes añadir la línea de redireccionamiento.

Puedes hacerlo trabajando inline (insertando código JavaScript en los elementos HTML, forma obsoleta de trabajar) y retornando el valor false:

Código HTML:
Ver original
  1. <form onsubmit="return f1(document.forms[0]['c2'].value)">
  2.     <input type="text"  value="" placeholder="nombre restaurante" required>
  3.     <input type="text" value=""  name="c2" placeholder="localidad" required>
  4.     <input type="submit" value="Buscar" />
  5. </form>

Código Javascript:
Ver original
  1. function f1(info){
  2.     var provincia;
  3.  
  4.     switch(info) {
  5.         case "gran canaria":
  6.              provincia='gran-canaria';
  7.              break;
  8.         case "a coruña":
  9.              provincia='a-coruna';
  10.              break;
  11.         case "illes balears":
  12.              provincia='illes-balears';
  13.              break;
  14.         default:
  15.              provincia=info;
  16.     }
  17.  
  18.     location.href = "http://es.search.yahoo.com/search?p=" + provincia;
  19.     return false;
  20. }

O mediante métodos que registran funciones escuchadoras de eventos (forma moderna y recomendada de trabajar):

Código HTML:
Ver original
  1.     <input type="text"  value="" placeholder="nombre restaurante" required>
  2.     <input type="text" value=""  name="c2" placeholder="localidad" required>
  3.     <input type="submit" value="Buscar" />
  4. </form>

Código Javascript:
Ver original
  1. document.addEventListener("submit", function(event){
  2.     event.preventDefault();
  3.     f1(document.forms[0]['c2'].value);
  4. });
  5.  
  6. function f1(info){
  7.     var provincia;
  8.  
  9.     switch(info) {
  10.         case "gran canaria":
  11.              provincia='gran-canaria';
  12.              break;
  13.         case "a coruña":
  14.              provincia='a-coruna';
  15.              break;
  16.         case "illes balears":
  17.              provincia='illes-balears';
  18.              break;
  19.         default:
  20.              provincia=info;
  21.     }
  22.  
  23.     location.href = "http://es.search.yahoo.com/search?p=" + provincia;
  24. }

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand