<a>タグがonClickのときにポップアップを開く方法は?


10

Magento 2では、ユーザーがリンクをクリックしたときにポップアップ(HTMLコードが含まれている)を表示したいと思います。


数分でお答えします。
Suresh Chikani 16

私のコードを試してもらえますか、成功してもしなくても問題はありませんか。
Suresh Chikani 16

回答:


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>

問題が発生した場合はお知らせください。


うまくいきました、ありがとう。ただし、ページの読み込み中に「こんにちは」というテキストが画面に表示されてから消えます。これに対する修正はありますか?
Luis Garcia

私の側から確認して更新します。
Suresh Chikani 16

更新コードを試してください。動作しているか更新していない?
Suresh Chikani 16

Hae @SHPatel、私は上記のコードを使用してモーダルでフォームを作成しましたが、フォームの送信中に送信ボタンが機能しないので、助けてください。私をチャットボックスに追加して、コードを投稿できるようにしてください。
Venu Joginpally 2016

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

Vendor / Module / 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;
    }
);

うまく動かない。このリンクを使用して、製品ページにサイズガイドポップアップを開きます。ただし、このリンクが有効になっている製品ページでは、ポップアップは機能せず(リンクをクリックしても何も起こりません)、製品の画像が読み込まれません。
Luis Garcia

コードを見せていただけますか?
Sohel Rana

私はあなたが提供したコードを正確に使用しましたが、ベンダーとモジュールの名前で「ベンダー」と「モジュール」を変更する2つの変更
Luis Garcia

動作するコードです。次のコマンド 'php bin / magento setup:static-content:deploy'を実行して、開発モードを実行するか、静的な競合をデプロイしてください
Sohel Rana

答えで見逃した部分はrequirejs-config.jsファイル宣言だったと思います。それが暗示されているとしても、そのファイルを追加することでソリューションは完璧に動作します!。
Circlesix 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.