¿Cómo abrir una ventana emergente cuando <a> etiqueta onClick?

10

En Magento 2, quiero mostrar una ventana emergente (con código html dentro) cuando un usuario hace clic en un enlace.

Luis garcia
fuente
Te daré una respuesta en unos minutos.
Suresh Chikani
¿Puedes probar con mi código, tienes éxito o no, tienes algún problema.
Suresh Chikani

Respuestas:

38

Puede abrir una ventana emergente cuando <a>etiquete onClick usando el siguiente código

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

Avísame si tienes algún problema.

Suresh Chikani
fuente
Funciona, gracias. Sin embargo, el texto "Hola, estoy aquí" aparece en la pantalla mientras se carga la página y luego desaparece. ¿Hay alguna solución para esto?
Luis García
déjame comprobar desde mi lado y actualizarlo.
Suresh Chikani
Prueba mi código de actualización. actualizarme trabajando o no?
Suresh Chikani
Hae @SHPatel, he creado el formulario en un modo modal usando el código anterior, pero el botón de enviar no funciona al enviar el formulario, ¿podrían ayudarme? ¿Podría agregarme al cuadro de chat para que pueda publicar mi código?
Venu Joginpally
@VenuJoginpally, también agrego un formulario en el poup, ¿puede decirme cómo enviar el formulario?
Jaisa
11

Prueba la forma estándar de Magento2:

Copie el siguiente código dentro del archivo 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>

Crear proveedor / 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
fuente
No puedo conseguir que funcione. Estoy usando el enlace para abrir una ventana emergente de guía de tallas en las páginas de productos. Sin embargo, en las páginas de productos donde este enlace está habilitado, la ventana emergente no funciona (no sucede nada cuando se hace clic en el enlace) y las imágenes del producto no se cargan.
Luis Garcia
¿Puedes mostrar tu código?
Sohel Rana
Utilicé exactamente el código que proporcionó, pero 2 modificaciones cambiaron "vendedor" y "módulo" con mis nombres de proveedor y módulo
Luis Garcia
Es código de trabajo. asegúrese de ejecutar el modo de desarrollo o desplegar contenido estático siguiendo el comando 'php bin / magento setup: static-content: deploy'
Sohel Rana
Creo que la parte que se perdió en la respuesta fue la declaración del archivo requirejs-config.js. Aunque eso está implícito, ¡agregar ese archivo hizo que su solución funcionara perfectamente!
circlesix