Reputation: 1273
I am having the following project that I have been working with for a while. Everything is working fine as you can see after running the snnipets.
/* The dark background behind the dialogs */
.dialog-overlay{
display: none;
position: fixed;
top:0;
left:0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.3);
z-index: 10;
}
/* The dialogs themselves */
.dialog-card{
box-sizing: border-box;
width: 570px;
position: absolute;
left: 50%;
margin-left: -285px;
top: 50%;
font: bold 14px sans-serif;
border-radius: 3px;
background-color: #ffffff;
box-shadow: 1px 2px 4px 0 rgba(0, 0, 0, 0.12);
padding: 45px 50px;
}
.dialog-card .dialog-question-sign{
float: left;
width: 68px;
height: 68px;
border-radius: 50%;
color: #ffffff;
text-align: center;
line-height: 68px;
font-size: 40px;
margin-right: 50px;
background-color: #b4d8f3;
}
.dialog-card .dialog-info{
float: left;
max-width: 350px;
}
.dialog-card h5{ /* Dialog title */
color: #383c3e;
font-size: 24px;
margin: 5px 0 30px;
}
.dialog-card p{ /* Dialog text */
color: #595d60;
font-weight: normal;
line-height: 21px;
margin: 30px 0;
}
.dialog-card .dialog-confirm-button,
.dialog-card .dialog-reject-button{
font-weight: inherit;
box-sizing: border-box;
color: #ffffff;
box-shadow: 0 1px 1px 0 rgba(0, 0, 0, 0.12);
padding: 12px 40px;
border: 0;
cursor: pointer;
outline: 0;
}
.dialog-card .dialog-confirm-button{
background-color: #87bae1;
margin-right: 12px;
}
.dialog-card .dialog-reject-button{
background-color: #e4749e;
}
.dialog-card button:hover{
opacity:0.96;
}
.dialog-card button:active{
position:relative;
bottom:-1px;
}
<div id="my-confirm-dialog" class="dialog-overlay">
<div class="dialog-card">
<div class="dialog-question-sign"><i class="fa fa-question"></i></div>
<div class="dialog-info">
<h5>Are you sure?</h5>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed pharetra id odio a pellentesque. In dapibus maximus augue, eu dapibus felis laoreet non.</p>
<button class="dialog-confirm-button">Yes</button>
<button class="dialog-reject-button">No</button>
</div>
</div>
</div>
<span class="dialog-show-button" data-show-dialog="my-confirm-dialog">Show Confirm Dialog</span>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>
// This is an example jQuery snippet that makes the dialogs work
$(document).ready(function() {
// We have two control functions that show or hide dialogs
function showDialog(id){
// Find the dialog and show it
var dialog = $('#' + id),
card = dialog.find('.dialog-card');
dialog.fadeIn();
// Center it on screen
card.css({
'margin-top' : -card.outerHeight()/2
});
}
function hideAllDialogs(){
// Hide all visible dialogs
$('.dialog-overlay').fadeOut();
}
// Here is how to use these functions
$('.dialog-confirm-button, .dialog-reject-button').on('click', function () {
// Hide the dialog when the confirm button is pressed
hideAllDialogs();
});
$('.dialog-overlay').on('click', function (e) {
if(e.target == this){
// If the overlay was clicked/touched directly, hide the dialog
hideAllDialogs();
}
});
$(document).keyup(function(e) {
if (e.keyCode == 27) {
// When escape is pressed, hide all dialogs
hideAllDialogs();
}
});
// Here, we are listening for clicks on the "show dialog" buttons,
// and showing the correct dialog
$('.dialog-show-button').on('click', function () {
// Take the contents of the "data-show-dialog" attribute
var toShow = $(this).data('show-dialog');
showDialog(toShow);
});
});
</script>
Beside being able to display the popup after clicking on Show Confirm Dialog
, I want to be able to display the popup when a PHP condition
is met.
Like:
if(condition){
//Display Popup
}
Kindly help me solve this problem
Upvotes: 1
Views: 6043
Reputation: 6953
supposing the php should be in the same script as the html, js, ...:
<?php
if(1===1) {
echo "<script>";
echo "showDialog('my-confirm-dialog');";
echo "</script>";
}
?>
this needs to live at the very end of your html, otherwise it'll fail, because DOM not loaded, etc...
To be sure you could place that inside $(document).ready
:
<script>
$(document).ready(function() {
// leave the function-definitions and eventlisteners here
//...
// add at the very end:
<?php
if(1===1) {
echo "showDialog('my-confirm-dialog');";
}
?>
});
</script>
Another solution would be to only set a js-var depending on the php-condition, and check for that in js.
Upvotes: 2
Reputation: 29
If you want to use some value from PHP in JavaScript, you have to put it somewhere on the page with PHP and read it with JavaScript. A dirty inline-script solution would be something like this:
<script>
var myValueFromPhp = <?= \json_encode($anyThing) ?>;
</script>
A clean solution depends on the use-case, but would be similar:
<div data-coolness="<?='yepp'?>></div>
(or something like that, depending on the templating engine)
Upvotes: 0
Reputation: 456
The easiest way I see you could achieve this is just make a script tag in which you would call this function.
<?php if( condition ): ?>
<script type='text/javascript'>
showDialog(id)
</script>
<?php endif; ?>
Upvotes: 1