Как открыть всплывающее окно при <a> тэге на клике?

10

В Magento 2 я хочу отображать всплывающее окно (с HTML-кодом внутри), когда пользователь нажимает на ссылку.

Луис Гарсия
источник
Я дам вам ответ через несколько минут.
Суреш Чикани
Можете ли вы попробовать с моим кодом, у вас успех или нет, есть какие-либо проблемы.
Суреш Чикани

Ответы:

38

Вы можете открыть всплывающее окно, когда <a>тег onClick, используя код ниже

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

Дайте мне знать, если у вас есть какие-либо проблемы.

Суреш Чикани
источник
Это работает, спасибо. Однако текст «Привет, я здесь» появляется на экране во время загрузки страницы, а затем исчезает. можно ли это исправить?
Луис Гарсия
позвольте мне проверить со своей стороны и обновить вам.
Суреш Чикани
Попробуйте мой код обновления. обновление у меня работает или нет?
Суреш Чикани
Hae @SHPatel, я создал форму в модальном режиме с использованием приведенного выше кода, но кнопка отправки не работает при отправке формы, не могли бы вы мне помочь. Не могли бы вы добавить меня в окно чата, чтобы я мог опубликовать свой код.
Venu Joginpally
@VenuJoginpally, я также добавляю форму в poup, вы можете сказать мне, как отправить форму
Jaisa
11

Попробуйте Magento2 стандартным способом:

Скопируйте следующий код в файл 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>

Создать поставщика / модуля / 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;
    }
);
Сохель Рана
источник
Я не могу заставить его работать. Я использую ссылку, чтобы открыть всплывающее руководство по размеру на страницах продукта. Однако на страницах продукта, где эта ссылка включена, всплывающее окно не работает (при нажатии ссылки ничего не происходит), а изображения продукта не загружаются.
Луис Гарсия
Можете ли вы показать свой код?
Сохель Рана
Я использовал именно тот код, который вы указали, но 2 модификации меняли «vendor» и «module» на имена моих поставщиков и модулей
Luis Garcia
Это рабочий код. убедитесь, что вы запускаете режим разработки или развертываете статическое состязание, выполнив следующую команду 'php bin / magento setup: static-content: deploy'
Sohel Rana
Я думаю, что часть, которую вы пропустили в ответе, была объявлением файла requirejs-config.js. Даже если это подразумевается, добавление этого файла сделало ваше решение идеальным!
circleix