Faire varier l'url d'envoi dans "action" d'un formulaire

louloute8091 Messages postés 14 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 15 mars 2007 - 15 mars 2007 à 15:10
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 - 15 mars 2007 à 20:18
Bonjoutr


Je suis en train de faire une bannière avec un menu déroulant. Chaque valeur de ce menu doit pointer vers une url différente quand on clique sur "OK".


Voilà ce que j'ai tenté de faire mais cela ne fonctionne pas :


<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>




<script language="javascript" type="text/javascript">
//redirection lien
function liens(){


if(document.forms['form'].menu.options[1].selected == true) {
document.forms['form'].action("http://www.google.fr");
document.forms['form'].submit();


}
else if (document.forms['form'].menu.options[2].selected == true){


document.forms['form'].action("http://www.wanadoo.fr");
document.forms['form'].submit();
}


else if (document.forms['form'].menu.options[3].selected == true){


document.forms['form'].action("http://www.yahoo.fr");
document.forms['form'].submit();
}


else if (document.forms['form'].menu.options[4].selected == true){


document.forms['form'].action("http://www.voila.fr");
document.forms['form'].submit();
}


}


</script>


 


dans mon header et dans mon , il y a :


<form name="form" method="post">
<select name="menu">
                                      
<option selected="selected"></option>
<option>choix1</option>
<option>choix2</option>
<option>choix3</option>
<option>choix4</option>


</select>








En fait, aucune action ne se produit quand je sélectionne l'une des options et valider.


De plus, je souhaiterai que le lien s'ouvre dans une nouvelle page : comment faire ?


Merci de votre aide !!


 

9 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 mars 2007 à 15:38
Bonjour,

°°mauvaise syntaxe : document.forms['form'].action("http://...");
    document.forms['form'].action="http://...";   ça irait mieux

    IE,FF,K-Melaon,Opera... donnent une erreur de syntaxe, c'est sûr
    avec IE, activer le deboggage, et mieux, télécharger le "Debogger IE"
    avec FF, regarder la "console d'erreurs", et mieux, télécharger "FireBug"

°°ne pas utiliser de mots réservés au html/javascript.
    <form name="form" method="post">
    <form name="formulaire" method="post">

    du coup, donc : document.formulaire.action=("http://...");

°°pourquoi ne pas mettre les url dans les value des options ?
    et au lieu de tester selectedIndex ( autant de tests que de lignes,
        en informatique, faut se poser des questions, il doit y avoir plus simple )
    utiliser
         document.formulaire.menu[document.formulaire.menu.selectedIndex].value
    avec ... <option value="http://www.voila.fr">Voila</option> ...
    par exemple.

°°pourquoi un submit d'un formulaire ?
    un formulaire c'est fait pour envoyer des données ( et je ne parlerais pas
       de onsubmit, qui est fait pour quand on envoie un formulaire, quand
       on clique sur le bouton submit )
    location.href=nouvelle url, ça baigne aussi, par exemple.

°°ai-je tout vu... tout dit ?



<hr />



Cordialement            Bul        
0
louloute8091 Messages postés 14 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 16:09
Merci pour ta réponse..mais je n'ai pas tout saisi

J'ai bien mis la "value" de mes "option" et changer le nom de mon form ...après je n'arrive pas à créer la fonction appropriée pour récupérer cette value :

 dans mon script j'ai mis :

function

liens(){
location.href=document.formulaire.menu.option.[selectedIndex].value;
}

j'ai laissé le reste tel quel...heu ça marche pas !!! Excuse moi mais je ne connais encore pas très bien le javascript !!!

Ah oui !! je voualis savoir comment ouvrir une nouvelle fenêtre avec le lien en question après avoir cliqué sur le bouton...

Merci !
0
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
15 mars 2007 à 16:24
bien le bonjour, le plus simple c'est de mettre un id à ton select :
<select name="menu" id="select">
    <option selected="selected"></option>
    <option value="http://www.google.fr">choix1</option>
    <option value="http://www.wanadoo.fr">choix2</option>
    <option value="http://www.yahoo.fr">choix3</option>
    <option value="http://www.voila.fr">choix4</option>
</select>

et dans ta fonction lien :
function liens(){
    // récupère le contrôle select
    var sel = document.getElementById("select");
    // ouvre la page selectionnée, si le tag value est renseigné
    if  ( sel.options[sel.selectedIndex].value != "")
        window.open(sel.options[sel.selectedIndex].value, "test");
}

Le truc c'est qu'avec IE, il ouvre une nouvelle fernêtre mais pas avec FF....

[o-_-o]
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 mars 2007 à 16:32
>>

heu ça marche pas





avec ça, je peux répondre,aider... tiens...
    mais... je n'ai pas mis option dans mon exemple !
        ( vérifier, il n'y aurait pas un S ? )
    et le name du formulaire ? il a été changé ?

tu n'as pas lu ou alors pas appliqué...


    avec IE, activer le deboggage, et mieux, télécharger le "Debogger IE"
    avec FF, regarder la "console d'erreurs", et mieux, télécharger "FireBug"

    car là aussi, il y a des erreurs signalées !!!





<hr />



Cordialement        Bul        
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
15 mars 2007 à 16:39
>>Le truc c'est qu'avec IE, il ouvre une nouvelle fernêtre mais pas avec FF

ça dépend du paramétrage, dans l'un comme dans l'autre !
perso, je refuse toutes les pop-up, donc window.open ne marche pas
et comme c'est le paramétrage par défaut aujourd'hui... ça marche chez
de moins en moins de personnes.




>>c'est de mettre un id à ton select
je n'aime guère utiliser ça. faut bien parfois, mais j'évite.
et quand on utilise php, pour transmettre, il faut un name, alors...
je préfère document.name du formulaire.name de l'élément
à document.getElementById("id de l'élément")
    chacun ses goûts.





<hr />



Cordialement            Bul        
0
louloute8091 Messages postés 14 Date d'inscription samedi 18 juin 2005 Statut Membre Dernière intervention 15 mars 2007
15 mars 2007 à 17:39
Quelqu'un d'autre peut m'aider SVP?
Je ne suis pas développeur et j'ai besoin de quelque chose de simple !!! merci !
0
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
15 mars 2007 à 19:09
Bon on te mache le code alors... :
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
<script language="javascript" type="text/javascript">
//redirection lien
function liens()
{
var sites=["http://www.google.fr","http://www.wanadoo.fr","http://www.yahoo.fr","http://www.voila.fr"];
document.formulaire.action=sites[document.formulaire.menu.selectedIndex];
document.formulaire.submit();
}
</script>
<form name="formulaire" method="post">
<select name="menu">
                                     
<option selected="selected"></option>
<option>choix1</option>
<option>choix2</option>
<option>choix3</option>
<option>choix4</option>

</select>

<hr />Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
0
stfou Messages postés 450 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 18 avril 2007 3
15 mars 2007 à 19:11
Pardon... (toujours se relire 2 fois)

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title></title>
<script language="javascript" type="text/javascript">
//redirection lien
function liens()
{
var sites=["http:\/\/www.google.fr","http:\/\/www.wanadoo.fr","http:\/\/www.yahoo.fr","http:\/\/www.voila.fr"];
document.formulaire.action=sites[document.formulaire.menu.selectedIndex];
document.formulaire.submit();
}
</script>
<form name="formulaire" method="post">
<select name="menu">
                                     
<option selected="selected"></option>
<option>choix1</option>
<option>choix2</option>
<option>choix3</option>
<option>choix4</option>


</select>











<hr />



Le travail n'a jamais tué personne, mais pourquoi prendre le rique ?
0
Flachy Joe Messages postés 2103 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 21 novembre 2023 1
15 mars 2007 à 20:18
>>>>>Le truc c'est qu'avec IE, il ouvre une nouvelle fernêtre mais pas avec FF


>>>

ça dépend du paramétrage, dans l'un comme dans l'autre !


>>>

perso, je refuse toutes les pop-up, donc window.open ne marche pas


>>>

et comme c'est le paramétrage par défaut aujourd'hui... ça marche chez


>>>

de moins en moins de personnes.

le window.open n'est bloqué que s'il est considéré comme une 'ouverture automatique" (au chargement de la page par exemple). Si la nouvelle fenetre s'ouvre seulement quand on clique sur un bouton ou un lien, c'est pas bloqué (par les anti-popup tout du moins).

Pour ouvrir le resultat d'un formulaire dans une nouvelle fenetre :
<form action="machin.htm" target="_new">

Flachy Joe
0
Rejoignez-nous