Como abrir pop-up quando <a> tag onClick?

10

No Magento 2, quero exibir um pop-up (com código html dentro) quando um usuário clica em um link.

Luis Garcia
fonte
Vou lhe dar resposta em alguns minutos.
Suresh Chikani
você pode tentar com o meu código, seu sucesso ou não, tem algum problema.
Suresh Chikani

Respostas:

38

Você pode abrir o pop-up quando <a>marcar onClick usando o código abaixo

<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>

Deixe-me saber se você tem algum problema.

Suresh Chikani
fonte
Funciona, obrigado. No entanto, o texto "Oi, estou aqui" aparece na tela enquanto a página está carregando e desaparece. Existe uma correção para isso?
Luis Garcia
deixe-me verificar do meu lado e atualizar para você.
Suresh Chikani
Experimente o meu código de atualização. atualizar para mim trabalhando ou não?
Suresh Chikani
Hae @SHPatel, eu criei o formulário em um modal usando o código acima, mas o botão enviar não funciona ao enviar o formulário, você poderia me ajudar. Você pode me adicionar à caixa de bate-papo, para que eu possa postar meu código.
Venu Joginpally
@VenuJoginpally, eu também adiciono formulário no poup. Você pode me dizer como enviar o formulário
Jaisa
11

Experimente o Magento2 de maneira padrão:

Copie o seguinte código dentro do arquivo 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>

Criar fornecedor / módulo / view / 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
fonte
Eu não posso fazê-lo funcionar. Estou usando o link para abrir um pop-up do guia de tamanhos nas páginas dos produtos. No entanto, nas páginas do produto em que esse link está ativado, o pop-up não funciona (nada acontece quando o link é clicado) e as imagens do produto não são carregadas.
Luis Garcia
Você pode mostrar seu código?
Sohel Rana
Eu usei exatamente o código fornecido, mas 2 modificações mudança "vendor" e "módulo" com os meus nomes de fornecedores e módulo
Luis Garcia
É código de trabalho. certifique-se de executar o modo de desenvolvimento ou estática implantar lutar pela seguinte comando 'bin php setup / magento:-conteúdo estático: deploy'
Sohel Rana
Acho que a parte que você perdeu na resposta foi a declaração do arquivo requirejs-config.js. Mesmo que isso esteja implícito, a adição desse arquivo fez com que sua solução funcionasse perfeita !.
circlesix