Comment ouvrir un popup lorsque <a> tag onClick?

10

Dans Magento 2, je souhaite afficher une fenêtre contextuelle (avec du code HTML à l'intérieur) lorsqu'un utilisateur clique sur un lien.

Luis Garcia
la source
Je vous répondrai dans quelques minutes.
Suresh Chikani
pouvez-vous essayer avec mon code, que vous réussissiez ou non, rencontrez des problèmes.
Suresh Chikani

Réponses:

38

Vous pouvez ouvrir une fenêtre contextuelle lorsque la <a>balise onClick utilise le code ci-dessous

<div>
    <a href="#" id="click-me">Click Me</a>
</div>

<div id="popup-modal" style="display:none;">
    <h1> Hi I'm here.... </h1>
</div>

<script>
    require(
        [
            'jquery',
            'Magento_Ui/js/modal/modal'
        ],
        function(
            $,
            modal
        ) {
            var options = {
                type: 'popup',
                responsive: true,
                innerScroll: true,
                title: 'popup modal title',
                buttons: [{
                    text: $.mage.__('Continue'),
                    class: '',
                    click: function () {
                        this.closeModal();
                    }
                }]
            };

            var popup = modal(options, $('#popup-modal'));
            $("#click-me").on('click',function(){ 
                $("#popup-modal").modal("openModal");
            });

        }
    );
</script>

Faites-moi savoir si vous avez un problème.

Suresh Chikani
la source
Cela fonctionne, merci. Cependant le texte "Salut je suis là" apparaît à l'écran pendant le chargement de la page, puis disparaît. Y a-t-il une solution à cela?
Luis Garcia
permettez-moi de vérifier de mon côté et de vous mettre à jour.
Suresh Chikani
Essayez mon code de mise à jour. mettre à jour pour moi de travailler ou non?
Suresh Chikani
Hae @SHPatel, j'ai créé le formulaire dans un modal en utilisant le code ci-dessus, mais le bouton d'envoi ne fonctionne pas lors de la soumission du formulaire, pourriez-vous s'il vous plaît m'aider. Pourriez-vous m'ajouter à la boîte de discussion, afin que je puisse poster mon code.
Venu Joginpally
@VenuJoginpally, j'ajoute également un formulaire dans la poupée pouvez-vous me dire comment soumettre le formulaire
Jaisa
11

Essayez la méthode standard de Magento2:

Copiez le code suivant dans le fichier phtml .

<div id="modal-form">
    <h1>Hey</h1>
</div>
<a class="action open-modal-form"
   href="#"
   title="Modal">
    <span>Click Me!</span>
</a>
<script type="text/x-magento-init">
    {
        ".open-modal-form": {
            "Vendor_Module/js/modal-form": {}
        }
    }
</script>

Créer un fournisseur / module / vue / frontend / web / js / modal-form.js

define(
    [
        'jquery',
        'Magento_Ui/js/modal/modal'
    ],
    function($) {
        "use strict";
        //creating jquery widget
        $.widget('Vendor.modalForm', {
            options: {
                modalForm: '#modal-form',
                modalButton: '.open-modal-form'
            },
            _create: function() {
                this.options.modalOption = this._getModalOptions();
                this._bind();
            },
            _getModalOptions: function() {
                /**
                 * Modal options
                 */
                var options = {
                    type: 'popup',
                    responsive: true,
                    title: 'Sample Title',
                    buttons: [{
                        text: $.mage.__('Continue'),
                        class: '',
                        click: function () {
                            this.closeModal();
                        }
                    }]
                };

                return options;
            },
            _bind: function(){
                var modalOption = this.options.modalOption;
                var modalForm = this.options.modalForm;

                $(document).on('click', this.options.modalButton,  function(){
                    //Initialize modal
                    $(modalForm).modal(modalOption);
                    //open modal
                    $(modalForm).trigger('openModal');
                });
            }
        });

        return $.Vendor.modalForm;
    }
);
Sohel Rana
la source
Je n'arrive pas à le faire marcher. J'utilise le lien pour ouvrir une fenêtre contextuelle du guide des tailles dans les pages produits. Cependant, dans les pages de produits où ce lien est activé, la fenêtre contextuelle ne fonctionne pas (rien ne se produit lorsque vous cliquez sur le lien) et les images du produit ne se chargent pas.
Luis Garcia
Pouvez-vous montrer votre code?
Sohel Rana
J'ai utilisé exactement le code que vous avez fourni, mais 2 modifications en changeant «fournisseur» et «module» avec mes noms de fournisseur et de module
Luis Garcia
C'est du code qui fonctionne. assurez-vous d'exécuter le mode de développement ou de déployer le contenu statique en suivant la commande «php bin / magento setup: static-content: deploy»
Sohel Rana
Je pense que la partie que vous avez manquée dans la réponse était la déclaration de fichier requirejs-config.js. Même si cela est implicite, l'ajout de ce fichier a rendu votre solution parfaite!.
circlesix