2010-03-02 3 views
5

Je travaille sur un script où tout ce que je veux qu'il fasse (maintenant) redirige l'utilisateur en fonction du bouton sur lequel il appuie. En fin de compte, il faudra entrer une entrée de forme et l'incorporer dans la redirection, mais pour l'instant j'essaie simplement d'obtenir les boutons pour envoyer l'utilisateur sur le site approprié. Cependant, Mes redirections ne fonctionnent pas.Redirection de page

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

Lorsque l'utilisateur clique sur le bouton, la page, avec rechargements? Q = ajouté à l'URL, il ne redirige pas. De l'aide?

+1

Deux choses qui ont vraiment amélioré mon js: 1. Utilisez Firebug pour déboguer le code 2. Utilisez JQuery pour obtenir les mêmes résultats dans beaucoup moins d'effort, et profiter de la compatibilité du navigateur pour la note libre – DanJ

+0

latérale: Si je remplace le window.location avec alerte (''); ça marche. Donc, je sais que les actions onclick sont en cours. Aussi, intéressant, si j'entoure les redirections d'alertes, la redirection fonctionne. – hodgesmr

+0

@DanJ ne pouvait pas être d'accord avec vous plus ... –

Répondre

1

Vous souhaitez utiliser un button et non un input type='submit'. Vos boutons actuels soumettent le formulaire, n'effectuant pas leurs actions onclick. Ou bloquer l'action de soumission d'une manière ou d'une autre. Vous pouvez également utiliser vos fonctions pour définir l'action du formulaire sur l'URL et la laisser simplement s'afficher.

+0

Merci. Cela a répondu à ma question. – hodgesmr

0

Vos scripts semblent très compliqués. Pourquoi ne pas avoir trois fonctions: getQ, googleSearch, et youTubeSearch? Puis à l'intérieur de l'événement onClick vous pouvez appeler la fonction exacte, y compris this.value à l'intérieur des paramètres d'entrée et en appelant getQ de l'intérieur de cette fonction? Votre méthode semble très inefficace. Si vous avez des fonctions distinctes pour chacun d'entre eux, il est inutile de passer par deux autres fonctions pour les atteindre.

Un bouton submit toujours soumettre le formulaire sans return false à la fin de l'événement onClick, et puisque la méthode d'affichage par défaut est GET, son joins ?q= à la fin de votre URL, car ce champ est vide et il est le seul champ de saisie dans le formulaire.

0

Pour rediriger vers une nouvelle page, vous n'avez pas besoin d'utiliser la grande fonction 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> 

Veuillez vérifier si cela vous aide.

0

Bien que jasonbar dit, changez votre entrée pour être de type «bouton» et non «soumettre». De plus, je préfère utiliser window.location.href au lieu de window.location uniquement. Je ne sais pas possible c'est une bonne pratique ... une programmation heureuse.

Questions connexes