Formaire: lien onclick

Résolu
daporoty Messages postés 54 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 10 septembre 2012 - 29 août 2007 à 14:24
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 31 août 2007 à 12:19
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
31 août 2007 à 12:19
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.
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
29 août 2007 à 14:55
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.
0
daporoty Messages postés 54 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 10 septembre 2012
29 août 2007 à 21:20
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 août 2007 à 06:08
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.
0

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

Posez votre question
daporoty Messages postés 54 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 10 septembre 2012
31 août 2007 à 00:26
 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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
31 août 2007 à 09:18
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.
0
daporoty Messages postés 54 Date d'inscription mercredi 4 mai 2005 Statut Membre Dernière intervention 10 septembre 2012
31 août 2007 à 12:08
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
0
Rejoignez-nous