In Magento 2, I want to display a popup (with html code inside) when a user clicks on a link.
2 Answers
You can open popup when <a>
tag onClick using below code
<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>
Let me know if you have any issue.
-
It works, thank you. However the text "Hi I'm here" appears on the screen while the page is loading, then disappear. Is there a fix for this? Aug 1, 2016 at 17:01
-
-
-
Hae @SHPatel , I have created the form in a modal using above code, but submit button not working while submitting the form, could you please help me. Could you add me to chat box, so that i can post my code. Dec 20, 2016 at 6:35
-
@VenuJoginpally, I also add form in the poup can you tell me how to submit the form– JaisaDec 14, 2018 at 10:38
Try Magento2 standard way:
Copy following code inside phtml file.
<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>
Create 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;
}
);
-
I can't get it to work. I'm using the link to open a size guide popup in product pages. However, in the product pages where this link is enabled, the popup does not work (nothing happens when link is clicked), and the product images dont load. Jul 29, 2016 at 22:22
-
-
I used exactly the code you provided but 2 modifications changing "vendor" and "module" with my vendor and module names Aug 1, 2016 at 16:51
-
It's working code. make sure you run development mode or deploy static contend by following command 'php bin/magento setup:static-content:deploy' Aug 1, 2016 at 18:38
-
I think the part you missed in the answer was the requirejs-config.js file declaration. Even though that is implied, adding that file in made your solution work perfect!. Jun 9, 2017 at 18:02