Foros del Web » Programando para Internet » Javascript »

enlace en un boton de formularuio

Estas en el tema de enlace en un boton de formularuio en el foro de Javascript en Foros del Web. Hola amigos, tengo un formulario que quiero que vaya a una pagina determinada segun el valor de un campo del formulario: Código: <head> <script> function ...
  #1 (permalink)  
Antiguo 18/02/2018, 08:11
 
Fecha de Ingreso: diciembre-2007
Mensajes: 299
Antigüedad: 16 años, 4 meses
Puntos: 2
Pregunta enlace en un boton de formularuio

Hola amigos,
tengo un formulario que quiero que vaya a una pagina determinada segun el valor de un campo del formulario:

Código:
<head>
<script>
function f1(info){
    var provincia;
    switch(info) {
    case "gran canaria":
             provincia='gran-canaria';
             break;
    case "a coruña":
             provincia='a-coruna';
             break;
    case "illes balears":
             provincia='illes-balears';
             break;
    default:
             provincia=info;
    }
    alert(provincia);
    return provincia;
}
</script>
</head>

<body>
<form>
<input type="text"  value="" placeholder="nombre restaurante" required>
<input type="text" value=""  name="c2" placeholder="localidad" required>
<input type="submit" value="Buscar" onclick='location.href="http://yahoo.es/"+f1(document.forms[0]["c2"].value)+"/";'>
</form>
tengo problemas con el evento onclick del boton "Enviar", no me ejecuta la accion¡¡(no me lleva a la pagina dada), sin embargo si pego el codigo del evento en la consola de JS(en Chrome) me funcona perfectamente(me redirecciona a esa pagina)

¿Cual creeis que pueda ser el error por el que no me funciona el evento? No entiendo cual puede ser el error ¿alguien m,e puede echar una mano?

Gracias, saludos:D
__________________
1os pasaos con xAMP en Windows
programando en PERL
  #2 (permalink)  
Antiguo 18/02/2018, 11:02
Avatar de 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
  #3 (permalink)  
Antiguo 18/02/2018, 13:26
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: enlace en un boton de formularuio

Y por que no haces esto?

Código Javascript:
Ver original
  1. function f1(opc,url){
  2. var def = "Opc Default";
  3. var opcs = {"a":"Opc A","b":"Opc B","c":"Opc C"};
  4.  
  5. var ref = "";
  6.     if(opcs[opc] === undefined){  ref  = def; }else{ ref = opcs[opc]; }
  7. window.location.href=url+ref;
  8. return false;
  9. }

opc = la opcion
url = la url

y mas generico:

Código Javascript:
Ver original
  1. function f1(opcs,opc,def,url){
  2. var ref = "";
  3.     if(opcs[opc] === undefined){  ref  = def; }else{ ref = opcs[opc]; }
  4. window.location = url+ref;
  5. return false;
  6. }

opcs = objeto con los datos
opc = la opcion
def = valor por defecto
url = la url

Saludos

Última edición por alvaro_trewhela; 18/02/2018 a las 13:32

Etiquetas: boton, enlace, formulario, input
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 08:41.