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.


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.


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;
    }
);

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.