2010-03-02 12 views
5

Sto lavorando a uno script in cui tutto ciò che voglio (ora) è reindirizzare l'utente in base al pulsante da premere. Alla fine prenderà l'input di forma e lo incorpori nel reindirizzamento, ma in questo momento sto solo cercando di ottenere i pulsanti per inviare l'utente al sito appropriato. Tuttavia, i miei reindirizzamenti non funzionano.Reindirizzamento pagine

<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> 

Quando uno fa clic sul pulsante, la pagina appena ricaricati con? Q = aggiunto all'URL, esso non reindirizza. Qualsiasi aiuto?

+1

Due cose che realmente migliorato il mio JS: 1. Utilizzare Firebug per eseguire il debug del codice di 2. utilizzare jQuery per ottenere gli stessi risultati in molto meno sforzo, e godere della compatibilità del browser gratis nota – DanJ

+0

laterale: Se sostituisco il window.location con alert (''); che funzioni. Quindi so che le azioni onclick vengono eseguite. Inoltre, è interessante notare che se si reindirizzano i reindirizzamenti agli avvisi, il reindirizzamento funziona. – hodgesmr

+0

@DanJ non sono più d'accordo con te ... –

risposta

1

Si desidera utilizzare uno button non uno input type='submit'. I tuoi pulsanti attuali inviano il modulo, non eseguendo le azioni onclick.

Oppure bloccare l'azione di invio in qualche modo. Oppure puoi usare le tue funzioni per impostare l'azione del modulo sull'url e lasciarlo semplicemente inviare.

+0

Grazie. Questo ha risposto alla mia domanda. – hodgesmr

0

I tuoi script sembrano molto complicati. Perché non ha tre funzioni: getQ, googleSearch e youTubeSearch? Quindi all'interno dell'evento onClick puoi chiamare la funzione esatta, incluso this.value all'interno dei parametri di input e chiamando getQ dall'interno di quella funzione? Il tuo metodo sembra altamente inefficiente. Se hai comunque delle funzioni separate per ognuna di esse, non è utile passare attraverso altre due funzioni per raggiungerle.

Un pulsante di invio sarà sempre inviare il modulo senza un return false alla fine l'evento onClick, e dal momento che il metodo predefinito distacco è GET, la sua allegando ?q= alla fine dell'URL perché questo campo è vuoto ed è l'unico campo di input nel modulo.

0

Per il reindirizzamento a una nuova pagina non è necessario utilizzare la grande funzione 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> 

Si prega di verificare se ti aiuta.

0

Così come dice jasonbar, cambia l'input in modo che sia di tipo "button" e non "submit". Inoltre, preferirei usare window.location.href invece di window.location solo. Non so che sia una buona pratica ... una programmazione felice.

Problemi correlati