Problème d'exécution d'un script JS

Réduire
X
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Problème d'exécution d'un script JS

    Bonjour,
    Je souhaite exécuter un script JS (dans une vue) qui observe l'état d'un champ "Checkbox"
    Les champs déclarés dans le fichier XML:
    Code HTML:
    <field id="PhotoPrincipale" name="photoprincipale" type="File" label="Photo principale" description="" />
    <field type="checkbox" id="accept" label="J'accepte" name="accept" required="true"/>
    Quand la case à cocher change d'état, je souhaite contrôler si le champ "file" est vide ou pas.
    Dans la vue j'appelle ces champs ainsi:
    Code PHP:

        <?php echo $this->form->renderField('photoprincipale'); ?>

    <div class="format-bloc" >
            <div style="color:#56a8e3; font-weight:700;margin-bottom:20px">
            <?php echo $this->form->renderField('accept'); ?>
                <?php echo " Cochez la case pour accepter que cette annonce soient diffusées dans les annonces du site" ?>
            </div>
        </div>
    Dans la vue j'ai ce script:
    Code PHP:
    <script type="text/javascript">
                jQuery('#accept').change(function(){
                 var DisplayYes = "";
                 var DisplayNone = "none";

                 if (document.getElementById('PhotoPrincipale').value == null) {
                    alert('La photo proncipale est obligatoire.');
                    jQuery('#Displaynone').val(DisplayNone);
                    jQuery('#Displayyes').val(DisplayYes);
                    break;}
                });
                </script>

    <?php
    echo $Displayyes;
    echo 
    $Displaynone;
    ?>
    Rien ne se passe.
    jquery.min.js est-il chargé ?

    Dans le doute j'ai ajouté la ligne pour charger jquery.min.js.
    Code PHP:
    $doc JFactory::getDocument();
    $doc->addScript(JUri::base() . '/media/com_esoffers/js/form.js');
    $doc->addScript(JUri::base() . 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'); 
    Mais rien ne change.

    Quelqu'un saurait-il me dire ce qui peut se passer ?

    Cordialement.

    Eric
    Dernière édition par Agrepe à 04/06/2018, 14h29

  • #2
    Tu as le lien du site en production, peut être plus facile pour certains, pour tester directement.

    Commentaire


    • #3
      Bonjour ZerooCool,
      C'est compliqué car il s'agit d'un site ou il faut obligatoirement être inscrit.
      Bien cordialement.
      Eric

      Commentaire


      • #4
        Bonjour Eric,

        Pour être sûr que jQuery soit chargé, la syntaxe est JHtml::_('jquery.framework');

        Je ne sais pas ce que JUri::base() suivi d'une adresse http peut donner, enfin si, je le sais et ce n'est pas vraiment ce que tu souhaites...

        Pascal
        JoomlaDay FR 2018 - 18/19 Mai 2018 ! J'y étais ... et vous ?

        If anything can go wrong, it will...
        If I can help, I will ..https://conseilgouz.com

        Commentaire


        • #5
          Bonjour Pascal,
          Merci beaucoup.
          En fait je me suis rendu compte que jQuery était déjà chargé.

          Je viens de voir que mon souci vient de:
          Code PHP:
          if (document.getElementById('PhotoPrincipale').value == null
          Qui ne vérifie pas si
          Code PHP:
          <div id="PhotoPrincipale">
              <?php echo $this->form->renderField('photoprincipale'); ?>
              </div>
          est vide ou pas.
          J'ai recherché des docs, j'ai vu plusieurs "solutions" que j'ai testé, mais rien ne fonctionne.
          (value == "" ou encore value == '')

          Je persévère.

          Cordialement.

          Eric

          Commentaire


          • #6
            En fait, je me demande s'il est possible de vérifier s'il est possible de vérifier si un champ "file" est vide ou pas ?

            Commentaire


            • #7
              As-tu essayé de mettre un default dans le XML pour l'id PhotoPrincipale , même si ce paramètre peut sembler superflu ?

              D'autre part, es-tu sûr que document.getElementById('PhotoPrincipale').value retourne bien quelque chose ? As-tu regardé par l'inspecteur si tu trouves bien une zone avec cet id ?

              Pascal
              JoomlaDay FR 2018 - 18/19 Mai 2018 ! J'y étais ... et vous ?

              If anything can go wrong, it will...
              If I can help, I will ..https://conseilgouz.com

              Commentaire


              • #8
                J'ai bien tenté de mettre l'i dans l'XML, et aussi une balise HTML "default", mais ça ne change rien.

                Tu as raison, quand j'inspecte le champ, je vois :
                div class="controls"><input type="file" name="jform[photoprincipale][]" aria-invalid="false"></div>
                dans l'inspecteur, je n'ai pas cela dans mon fichier.

                Je n'ai que:
                Code PHP:
                <div id="PhotoPrincipale">
                    <?php echo $this->form->renderField('photoprincipale'); ?>
                    </div>

                                <?php if (!empty($this->item->photoprincipale)) : ?>
                                    <?php $photoprincipaleFiles = array(); ?>
                                    <?php foreach ((array)$this->item->photoprincipale as $fileSingle) : ?>
                                        <?php if (!is_array($fileSingle)) : ?>
                                            <a href="<?php echo JRoute::_(JUri::root() . 'uploads' DIRECTORY_SEPARATOR $fileSinglefalse);?>"><?php echo $fileSingle?></a> | 
                                            <?php $photoprincipaleFiles[] = $fileSingle?>
                                        <?php endif; ?>
                                    <?php endforeach; ?>
                                <?php endif; ?>

                                <input type="hidden" name="jform[photoprincipale_hidden]" id="jform_photoprincipale_hidden" value="<?php echo implode(','$photoprincipaleFiles); ?>" />

                Commentaire


                • #9
                  Salut
                  elle est tjs d'actu cette ligne la?

                  Code PHP:
                  $doc->addScript(JUri::base() . 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js'); 
                  JUri::base() ;

                  c'est l'url de ton site auquel tu rajoutes la suite. Du coup, ca fait
                  https://www.monsiteenjoomla.org/https://ajax.googleapis......
                  Donc echec assuré.

                  ++

                  Commentaire


                  • #10
                    Non, mais elle ne l'est plus. Mais jquery.min.js était déjà chargé, mon souci n'était pas là.
                    Pour les fichiers js, je préfère stocker dans le dossier media/mon_extension... puis ce que j'utilise c'est:

                    JHTML::script('nom_du_fichier.js','/chemin');

                    Par exemple: JHTML::script('jquery.googlemap.js','/media/com_esoffers/js/');
                    Dernière édition par Agrepe à 12/06/2018, 17h10

                    Commentaire


                    • #11
                      J'en suis arrivé à une conclusion, vérifier le contenu d'un champ "File" semble impossible, alors j'ai créé un petit script qui met une photo par défaut quand le champ dans la table est vide.

                      Commentaire

                      Annonce

                      Réduire
                      1 sur 2 < >

                      C'est [Réglé] et on n'en parle plus ?

                      A quoi ça sert ?
                      La mention [Réglé] permet aux visiteurs d'identifier rapidement les messages qui ont trouvé une solution.

                      Merci donc d'utiliser cette fonctionnalité afin de faciliter la navigation et la recherche d'informations de tous sur le forum.

                      Si vous deviez oublier de porter cette mention, nous nous permettrons de le faire à votre place... mais seulement une fois
                      Comment ajouter la mention [Réglé] à votre discussion ?
                      1 - Aller sur votre discussion et éditer votre premier message :


                      2 - Cliquer sur la liste déroulante Préfixe.

                      3 - Choisir le préfixe [Réglé].


                      4 - Et voilà… votre discussion est désormais identifiée comme réglée.

                      2 sur 2 < >

                      Assistance au forum - Outil de publication d'infos de votre site

                      Compatibilité: PHP 4.1,PHP4, 5, 6DEV MySQL 3.2 - 5.5 MySQLi from 4.1 ( @ >=PHP 4.4.9)

                      Support Version de Joomla! : | J!3.0 | J!2.5.xx | J!1.7.xx | J!1.6.xx | J1.5.xx | J!1.0.xx |

                      Version française (FR) D'autres versions sont disponibles depuis la version originale de FPA

                      UTILISER À VOS PROPRES RISQUES :
                      L'exactitude et l'exhaustivité de ce script ainsi que la documentation ne sont pas garanties et aucune responsabilité ne sera acceptée pour tout dommage, questions ou confusion provoquée par l'utilisation de ce script.

                      Problèmes connus :
                      FPA n'est actuellement pas compatible avec des sites Joomla qui ont eu leur fichier configuration.php déplacé en dehors du répertoire public_html.

                      Installation :

                      1. Téléchargez l'archive souhaitée : http://afuj.github.io/FPA/

                      Archive zip : https://github.com/AFUJ/FPA/zipball/master

                      2. Décompressez le fichier de package téléchargé sur votre propre ordinateur (à l'aide de WinZip ou d'un outil de décompression natif).

                      3. Lisez le fichier LISEZMOI inclus pour toutes les notes de versions spécifiques.

                      4. LIRE le fichier de documentation inclus pour obtenir des instructions d'utilisation détaillées.

                      5. Téléchargez le script fpa-fr.php à la racine de votre site Joomla!. C'est l'endroit que vous avez installé Joomla et ce n'est pas la racine principale de votre serveur. Voir les exemples ci-dessous.

                      6. Exécutez le script via votre navigateur en tapant: http:// www. votresite .com/ fpa-fr.php
                      et remplacer www. votresite .com par votre nom de domaine


                      Exemples:
                      Joomla! est installé dans votre répertoire web et vous avez installé la version française du fichier FPA:
                      Télécharger le script fpa-fr.php dans: /public_html/
                      Pour executer le script: http://www..com/fpa-fr.php

                      Joomla! est installé dans un sous-répertoire nommé "cms" et vous avez installé la version française du fichier FPA:
                      Télécharger le script fpa-fr.php dans: /public_html/cms/
                      Pour executer le script: http://www..com/cms/fpa-fr.php

                      En raison de la nature très sensible de l'information affichée par le script FPA, il doit être retiré immédiatement du serveur après son utilisation.

                      Pour supprimer le script de votre site, utilisez le lien de script de suppression fourni en haut de la page du script. Si le lien de suppression échoue pour supprimer le script, utilisez votre programme FTP pour le supprimer manuellement ou changer le nom une fois que le script a généré les données du site et le message publié sur le forum. Si le script est toujours présent sur le site, il peut être utilisé pour recueillir suffisamment d'informations pour pirater votre site. Le retrait du script empêche des étrangers de l'utiliser pour jeter un oeil à la façon dont votre site est structuré et de détecter les défauts qui peuvent être utilisé à vos dépends.
                      Voir plus
                      Voir moins
                      Travaille ...
                      X