Formaire: lien onclick [Résolu]

Signaler
Messages postés
54
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
10 septembre 2012
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour.

J'ai fait un petit menu déroulant de ce type :

<form name="menu">
<select name="print" size="1">
<option value="">[# tout]</option>
<option value="">[# le texte seulement]</option>
<option value="">[# les photos seulement]
</option>
</select>
</form>

Bien sur les liens ne marchent pas car je ne connais pas la syntaxe pour intégrer les onclick dans le value.
Merci de votre aide.

DapORoty

7 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
foultitudes de solutions ( comme toujours )...

   
°°° <option value="trt1(); trt2();... ">un
    et dans ce cas
=>    eval(s.options[s.selectedIndex].value);

    °°° fais une function trt4() { trt2();
                                                  trt3();   }

    °°° doit y en avoir d'autres... qui ne me viennent pas sur l'instant...

>>Je n'ai jamais pris de cours,
    +1
>>j'apprend sur le tas
    +1
>>
et c'est pas très facile
    +1 aussi !


    si on n'apprend plus, il reste peu d'intérêts dans la vie ( en dehors des 3B ) .
    si c'était facile, ce ne serait pas intéressant.








<hr />




Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
bonjour,

>pour intégrer les onclick dans le value
    on ne peux pas. enfin.. avec IE. avec FF ce serait possible.

    onchange dans le select qui appelle une fonction, dans laquelle
        on exécute ce qu'il faut en fonction du n° de ligne

    <select onchange="trt(this);"...
       et dans : function trt(s)   ou utilise 
            s.options[s.selectedIndex].text ou .value
            ou même s.selectedIndex qui est le n° de ligne
       ( attention à la ligne sélectionnée par défaut si size=1 ou non codé )




<hr />




Cordialement                Bul         [mon Site]     [M'écrire]
<hr />


En général, c'est absurde de généraliser.
Messages postés
54
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
10 septembre 2012

Salut Bultez,

Tout d'abords voici le script complet :

<html><head>
<title>print</title>


<script>
function Printtext() {
if(navigator.appName=='Microsoft Internet Explorer') {
parent.text.focus(); window.print();
} else {
parent.text.print();
}
}
</script>


<script>
function Printimg() {
if(navigator.appName=='Microsoft Internet Explorer') {
parent.photo.focus(); window.print();
} else {
parent.photo.print();
}
}
</script>


<script>
function trt(s)
...


</script>


</head>


<form>
<select name=print onchange="trt(this);"">
  <option selected value="">- - - IMPRIMER - - -
  <option value="1">tout
  <option value="2">le texte seulement
  <option value="3">les photos seulement
</select>
</form>


</html>

Je pêche totalement sur la fonction permettant d'appeler les fonctions selectionnées dans le formilaire.  help





DapORoty
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
function trt(sel)
{   switch ( sel.selectedIndex ) test n° d'option
    ou switch ( sel.options[sel.selectedIndex].value ) test value de l'option sélectionnée
    ou ... ?
    {   case 0:
             traitement si option 1 choisie
             break;

        case 1:

             traitement si option 2 choisie

             break;
       ...
    }
}

ou , et ce serait probablement mieux ( pas de switch, 1 seule instruction.... )
    met ce qu'il faut dans le value pour t'y "brancher directement"
    creuse un peu de ce coté là... eval par exemple ?

<hr />
Cordialement                Bul         [mon Site]     [M'écrire]<hr />En général, c'est absurde de généraliser.
Messages postés
54
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
10 septembre 2012

 bug bug bug ...
Voila les corrections d'après l'orientation initiale :

<html><head>
<title>rapport</title>


<script>
function Printtext() {
if(navigator.appName=='Microsoft Internet Explorer') {
parent.text.focus(); window.print();
} else {
parent.text.print();
}
}
</script>


<script>
function Printimg() {
if(navigator.appName=='Microsoft Internet Explorer') {
parent.photo.focus(); window.print();
} else {
parent.photo.print();
}
}
</script>


<script>
function trt(sel)
{
switch ( sel.options[sel.selectedIndex].value )
{
case 1: Printtext(); Printimg();
break;
case 2: Printtext();
break;
case 3: Printimg();
break;
}
}
</script>


</head>


<select name=print onchange="trt(this);"">
<option selected value="">- - - IMPRIMER - - -</option>
<option value="1">tout le rapport</option>
<option value="2">le texte seulement</option>
<option value="3">les photos seulement</option>
</select>






</html>

Il n'y a aucune impression lors de la selection dans le menu déroulant, alors qu'en remplacant le menu par des boutons l'un à coté de l'autre, ca marche.

Qu'est ce qu'il se passe ?

DapORoty
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
35
si tu testes le value ( pourquoi mettre un value 1,2,... d'ailleurs
    selectedIndex est plus simple, c'est le n° de ligne )
    c'est du caractère pas un nombre.

case "1": Printtext(); Printimg();

je disais eval.
    ch'tit exemple ?

<script type="text/javascript">
    function trt1()    {    alert("1");    }
    function trt2()    {    alert("2");    }
    function trt(s)
    {    eval(s.options[s.selectedIndex].value+"()"); 
           // ou , mais c'est exclusif IE je crois : window[s.options[s.selectedIndex].value()];
    }
</script>
<select     size=3
                 onchange="trt(this);">
    <option value="trt1">un
    <option value="trt2">deux
</select>

<hr />



Cordialement                Bul         [mon Site]     [M'écrire]<hr />
En général, c'est absurde de généraliser.
Messages postés
54
Date d'inscription
mercredi 4 mai 2005
Statut
Membre
Dernière intervention
10 septembre 2012

Salut Bultez,

Magnifique, là c'est très clair, j'ai tout compris !
Je n'ai jamais pris de cours, j'apprend sur le tas et c'est pas très facile avec le language objet.

Il ne reste un dernier problème, c'est l'exécution de deux fonction (les function trt2 et 3) sous le nom function trt1, voici les script :

<script>
function trt1()
{
if(navigator.appName=='Microsoft Internet Explorer') {
parent.text.focus(); parent.photo.focus(); window.print();
} else {
parent.text.print(); parent.photo.print();
}
}


function trt2()
{
if(navigator.appName=='Microsoft Internet Explorer') {
parent.text.focus(); window.print();
} else {
parent.text.print();
}
}


function trt3()
{
if(navigator.appName=='Microsoft Internet Explorer') {
parent.photo.focus(); window.print();
} else {
parent.photo.print();
}
}
 
Merci pour ta contribution.





DapORoty