2010-03-02 20 views
5

Estoy trabajando en un script donde todo lo que quiero hacer (ahora mismo) es redirigir al usuario según el botón que presione. Eventualmente tomará la forma de entrada e incorporará eso en la redirección, pero ahora solo estoy tratando de obtener los botones para enviar al usuario al sitio apropiado. Sin embargo, mis redireccionamientos no funcionan.Redirección de página

<html> 
<head> 
<title> 
Home 
</title> 
</head> 

<body> 

<script type="text/javascript"> 
<!-- 

var textstring; 
var btnWhichButton; 

//Gets the text from the form 
function getQ() { 
    textstring = document.forms['Search'].elements[0].value; 
} 

//Does a Google Search 
function googleSearch() { 
    window.location ="http://www.google.com"; 
} 

//Does a YouTube Search 
function youtubeSearch() { 
    window.location = "http://youtube.com"; 
} 

//Figure out which button was pressed 
function whichButton() { 
    if (btnWhichButton.value == 'Google Search') { 
     googleSearch(); 
    } else if (btnWhichButton.value == 'YouTube Search'){ 
     youtubeSearch(); 
    } 
} 

//main function to run everything 
function main() { 
    getQ(); 
    whichButton(); 
} 
// --> 
</script> 


<form name="Search" > 

<input type="text" name="q" size="31" maxlength="255" value="" /> 
<input type="submit" value="Google Search" onclick="btnWhichButton=this; main();" /> 
<input type="submit" value="YouTube Search" onclick="btnWhichButton=this; main();" /> 

</form> 
</body> 

</html> 

Cuando se hace clic en cualquiera de los botones, la página vuelve a cargar con? Q = añade a la URL, que no redirige. ¿Alguna ayuda?

+1

Dos cosas que realmente mejorado mi JS: 1. Uso Firebug para depurar el código 2. Uso jQuery para lograr los mismos resultados en mucho menos esfuerzo, y disfrutar de la compatibilidad del navegador de forma gratuita – DanJ

+0

nota al margen: Si sustituyo window.location con alerta (''); eso funciona. Entonces sé que se están realizando las acciones onclick. Además, curiosamente, si rodeo los redireccionamientos con alertas, la redirección funciona. – hodgesmr

+0

@DanJ no pudo estar más de acuerdo contigo ... –

Respuesta

1

que desea utilizar no es un button un input type='submit'. Sus botones actuales envían el formulario, sin realizar sus acciones onclick.

o bloquear la acción de envío de alguna manera. O puede usar sus funciones para configurar la acción de formulario en la url y simplemente dejarla enviar.

+0

Gracias. Esto respondió mi pregunta. – hodgesmr

0

Sus guiones parecen altamente excesivamente complicada. ¿Por qué no tener tres funciones: getQ, googleSearch y youTubeSearch? Entonces, dentro del evento onClick puede llamar a la función exacta, incluyendo this.value dentro de los parámetros de entrada y llamando al getQ desde adentro de esa función? Su método parece altamente ineficiente. Si va a tener funciones separadas para cada uno de ellos de todos modos, no tiene sentido pasar por otras dos funciones para llegar a ellos.

Un botón de envío siempre presentará el formulario sin return false al final del evento de clic, y ya que el método de contabilización por defecto es GET, su Colocación ?q= al final de la URL, ya que el campo está en blanco y es el único campo de entrada en el formulario.

0

Para volver a dirigir a la nueva página que no hay necesidad de utilizar la gran función de JavaScript.

<html> <body> 
    <input type="button" value="Google Search" onclick="javascript:window.location.href='http://www.google.com'" /> 
    <input type="button" value="You tube Search" onclick="javascript:window.location.href='http://youtube.com'" /> 
</body></html> 

Por favor, comprueba si te sirve.

0

Bueno como dice jasonbar, cambiar la entrada para que sea de 'botón' tipo y no 'enviar'. Además, yo prefiero usar window.location.href en lugar de window.location solamente. No sé si esto es una buena práctica ... feliz programación.

Cuestiones relacionadas