2010-03-02 21 views
5

Pracuję nad skryptem, w którym wszystko, co chcę zrobić (teraz), przekierowuje użytkownika na podstawie naciśniętego przycisku. Ostatecznie zajmie to wejście i uwzględni to w przekierowaniu, ale teraz próbuję po prostu uzyskać przyciski, aby wysłać użytkownika do odpowiedniej strony. Jednak moje przekierowania nie działają.Przekierowanie strony

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

Po kliknięciu przycisku albo, strona ładuje tylko z? Q = dołączany do adresu URL, to nie przekierowuje. Jakaś pomoc?

+1

Dwie rzeczy, które naprawdę ulepszone moje JS: 1. Użyj FireBug do debugowania kodu 2. użyć jQuery aby osiągnąć te same rezultaty w znacznie mniejszym wysiłkiem, i cieszyć się kompatybilność przeglądarki za darmo nuty – DanJ

+0

Side: Gdybym zastąpić window.location z ostrzeżeniem (''); to działa. Więc wiem, że wykonywane są akcje onclick. Co ciekawe, jeśli otworzę przekierowania za pomocą alertów, przekierowanie działa. – hodgesmr

+0

@DanJ nie mógł się z Tobą zgodzić więcej ... –

Odpowiedz

1

Chcesz użyć button, a nie input type='submit'. Twoje obecne przyciski przesyłają formularz, nie wykonując swoich czynności onclick.

Lub zablokuj akcję przesyłania w pewien sposób. Lub możesz użyć swoich funkcji, aby ustawić działanie formularza na adres URL i po prostu pozwól mu przesłać.

+0

Dziękuję. To odpowiadało na moje pytanie. – hodgesmr

0

Twoje skrypty wydają się bardzo skomplikowane. Dlaczego nie ma trzech funkcji: getQ, googleSearch i youTubeSearch? Następnie wewnątrz zdarzenia onClick można wywołać dokładnie tę funkcję, w tym this.value wewnątrz parametrów wejściowych i wywołanie getQ z wewnątrz tej funkcji? Twoja metoda wydaje się wysoce nieefektywna. Jeśli masz zamiar mieć osobne funkcje dla każdego z nich, nie ma sensu przechodzić przez dwie inne funkcje, aby do nich dotrzeć.

Przycisk przesyłania zawsze przesyła formularz bez return false na końcu zdarzenia onClick, a ponieważ domyślną metodą księgowania jest GET, jego adres URL jest ?q= na końcu adresu URL, ponieważ to pole jest puste i jest to jedyne pole wejściowe w formularzu.

0

Do przekierowania na nową stronę nie trzeba używać funkcji dużego 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> 

Proszę sprawdzić, czy to pomaga.

0

Jak mówi jasonbar, zmień dane wejściowe na "przycisk" typu, a nie "prześlij". Poza tym wolałbym używać tylko okna window.location.href zamiast window.location. Nie wiem, czy to dobra praktyka ... wesołe programowanie.

Powiązane problemy