IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Ouvrir une nouvelle page à partir d'une adresse dans une liste déroulante


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Par défaut Ouvrir une nouvelle page à partir d'une adresse dans une liste déroulante
    Bonjour,

    dans une page par exemple Index.php je récupère un fichier .txt dans lequel sont consignée dans l'ordre chronologique les fichiers téléchargés ainsi que le moment où ils l'ont été.

    la deuxième phase consiste à traiter les données du fichier de telle façon que j'obtienne un tableau regroupant au maximum les 10 derniers téléchargements. Dans ce tableau, je traite les données de façon à le transformer pour que chaque ligne contienne :
    1° le lien cible du téléchargement,
    2° la ligne du fichier .txt que l'on affichera dans une liste déroulante.

    la troisième phase consiste à afficher la liste déroulante dans la partie html et...
    en cliquant sur un mot servant de lien à nous ouvrir une messagebox dans le quel est indiqué le numéro de l'item suivi de l'adresse du lien ciblé puis en fermant la messagebox, envoyer vers la cible en ouvrant une nouvelle page.

    Et c'est dans cette dernière partie que j'achoppe.

    En effet, j'ouvre bien la message box avec les bonnes info mais en la fermant je récupère le message d'erreur suivant :
    Not Found
    The requested URL /Version 33 PHP - attente/document.forms.titres.Liste.options[((document.forms.titres.Liste.options.selectedIndex))].value was not found on this server.

    Apache/2.4.10 (Win32) OpenSSL/1.0.1h PHP/5.4.31 Server at localhost Port 80
    Voici donc le code source de la page une fois la liste générée par mon code php...
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    <!DOCTYPE HTML> 
    <html>
    <head>
     
     
    </head>
     
    <body>
    </br>
    </br>
     
    <!--   /////////////////////////// HTML ////////////////////////// -->
     
    <br><br>
    ON PASSE EN HTML<br><br>
    <!-- 
     
    -->
     
    		<form name="titres">
     
                <select name="Liste" onchange="document.location = this.options[this.selectedIndex].value; " >			
     
    	<option value="installe_rar.php">Installation Alpha.rar lundi 10 septembre 2018 à 20h 54min 21s
    </option>
    	<option value="MAJ_rar.php">NinaPerf.rar lundi 10 septembre 2018 à 20h 54min 38s
    </option>
    	<option value="MAJ_help_zip.php">aide Nina.zip lundi 10 septembre 2018 à 20h 55min 04s
    </option>
    	<option value="MAJ_help_rar.php">aide Nina.rar lundi 10 septembre 2018 à 20h 55min 09s
    </option>
    	<option value="MAJ_rar.php">NinaPerf.rar lundi 10 septembre 2018 à 20h 55min 59s
    </option>
    	<option value="MAJ_zip.php">NinaPerf.zip lundi 10 septembre 2018 à 20h 56min 20s
    </option>
    	<option value="MAJ_zip.php">NinaPerf.zip mercredi 12 septembre 2018 à 21h 57min 55s
    </option>
    	<option value="installe_zip.php">Installation Alpha.zip dimanche 16 septembre 2018 à 23h 41min 29s
    </option>
    	<option value="installe_rar.php">Installation Alpha.rar mercredi 19 septembre 2018 à 22h 56min 03s
    </option>
    	<option value="MAJ_help_zip.php">aide Nina.zip jeudi 20 septembre 2018 à 09h 01min 51s</option>
    </select>
    		<a  href='document.forms.titres.Liste.options[((document.forms.titres.Liste.options.selectedIndex))].value'
    			target="_blank"  onClick=" alert('Choix '+(( document.forms.titres.Liste.options.selectedIndex) + 1) + 
    			' avec ' + document.forms.titres.Liste.options[((document.forms.titres.Liste.options.selectedIndex))].value) "
    			> Cible</a> 
     
            </form>
    <br><br>

    merci par avance.

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="self.location.href=this.value; "
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Par défaut
    non ça ne fonctionne pas car la nouvelle page se superpose à la page de l'appel et n'est en aucun cas une page supplémentaire.
    pour que ce soit le cas il faut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onchange="window.open(this.value);return false;"
    Cet aspect de la question avait déjà été élaboré précédemment avec
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
        <td WIDTH="68%">		
    		<form name="titres">
     
            <select name="Liste" onchange="window.open(this.value);return false;">			
     
    	<?php 
            
                    if ($liste_existe == TRUE){
     
                    $selected = '';
                            
                    foreach ($array as $key => $value){
                            echo "\t",'<option value="', $array[$key]['code'] ,'"', $selected ,'>', $array[$key]['application'] ,'</option>',"\n"; 
                            $selected='';
                    }               
                            echo'</select>',"\n";   
                    }else{;}                                                
            ?>
            </form>			
    	</td>
    Néanmoins cela me pose un problème car dans la boite il y a une valeur par défaut et tant que l'on reste sur le même item on ne peut ouvrir une nouvelle page sauf si l'on change une fois et que l'on revient ensuite ce qui fait deux nouvelles pages et non une seule.

    Donc soit il faut que la liste s'affiche sans qu'il y ai d'item présectionné et là je ne sais pas faire, soit on choisit l'item de façon classique et un bouton valide mon choix et ouvre cette nouvelle page. C'est pour cela que j'avais envisagé...
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <a  href='document.forms.titres.Liste.options[((document.forms.titres.Liste.options.selectedIndex))]'
     target="_blank"  onClick=" alert('Choix '+(( document.forms.titres.Liste.options.selectedIndex) + 1) + 
    ' avec ' + document.forms.titres.Liste.options[((document.forms.titres.Liste.options.selectedIndex))].value) "
    > Cible</a>
    mais la si ma messgebox d'alerte fonctionne bien lorsque je la ferme j'ai un message d'erreur.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...tant que l'on reste sur le même item on ne peut ouvrir une nouvelle page sauf si l'on change une fois et que l'on revient ensuite ce qui fait deux nouvelles pages et non une seule.
    Donc soit il faut que la liste s'affiche sans qu'il y ai d'item présectionné...
    1- D'abord, il te faut une <option> "vide" dans le <select> :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
            <option value="">choisissez...</option>

    2- Ensuite, modifier le onchange :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
            <select name="Liste" onchange="if(this.value!=''){ window.open(this.value); }">
    (le return false; n'a, à priori, pas sa place ici)

    N.B. document.forms.titres.Liste.options : mets un id à ton <select>. Ce sera plus simple !

    3- Amélioration
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
            <select name="Liste" id="maListe">
    Et sous le </select> :
    Code JavaScript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script>
    document.querySelector('#maListe').addEventListener('change', function() {
      if(this.value!=''){ window.open( encodeURI(this.value) ); }
    });
    </script>
    Dernière modification par Invité ; 04/10/2018 à 15h53.

  5. #5
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Par défaut
    Merci pour le retour sur ma deuxième question, j'avais bien repéré un exemple ou le 1er item était un titre non sélectionnable mais je ne savais pas comment m'y prendre.
    Je vais examiner ça de près et ne manquerai pas de faire un retour.
    Merci du suivi.

  6. #6
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Octobre 2004
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Octobre 2004
    Messages : 264
    Par défaut
    parfait pour
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <select name="Liste" id="maListe" onchange="if(this.value!=''){ window.open(this.value); }">        
    <option value="">choisissez...</option>
    par contre l'option vide n'apparait en tête que lorsque la liste est ouverte. C'est le dernier item qui apparaît dans la boite fermée et c'est lui qui est en surbrillance lorsque la liste est déroulée.

    Dans quel but doit-on rajouter le code javascript sous le sous le </select> svp ?

    attention il y a une toute petite erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script>
    document.querySelector('#maListe').addEventListener('change', function()){ // parenthèse à décaler
      if(this.value!=''){ window.open( encodeURI(this.value )); }
    }); // la dernière est à supprimer
    </script>
    Pourquoi m'avez-vous fourni ce lien svp ?
    encodeURI()

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/09/2018, 16h19
  2. ouvrir une nouvelle page à partir d'une popup
    Par babafredo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 09/12/2008, 16h06
  3. Réponses: 2
    Dernier message: 04/06/2007, 09h33
  4. Ouvrir un document Word présent sur le serveur dans une nouvelle page+enregistrement
    Par kenny49 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 16/04/2007, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo