我正在进行以下与我合作过一段时间的项目。在运行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>
除了能够在点击Show Confirm Dialog
后显示弹出窗口时,我希望能够在满足PHP condition
时显示弹出窗口。
喜欢:
if(condition){
//Display Popup
}
请帮我解决这个问题
答案 0 :(得分:2)
假设php应该与html,js,...:
在同一个脚本中<?php
if(1===1) {
echo "<script>";
echo "showDialog('my-confirm-dialog');";
echo "</script>";
}
?>
这需要生活在你的html的最后,否则它会失败,因为DOM没有加载等等......
确保您可以将其放在$(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>
另一个解决方案是仅根据php条件设置js-var,并在js中检查。
答案 1 :(得分:1)
我看到你可以实现这一目标的最简单方法就是制作一个脚本标签,你可以在其中调用这个函数。
<?php if( condition ): ?>
<script type='text/javascript'>
showDialog(id)
</script>
<?php endif; ?>
答案 2 :(得分:0)
如果你想在JavaScript中使用PHP中的某些值,你必须使用PHP将它放在页面上并使用JavaScript读取它。 一个脏的内联脚本解决方案将是这样的:
<script>
var myValueFromPhp = <?= \json_encode($anyThing) ?>;
</script>
一个干净的解决方案取决于用例,但类似:
<div data-coolness="<?='yepp'?>></div>
(或类似的东西,取决于模板引擎)