PHP中用于显示模态的Echo Javascript函数显示不正确
Echo Javascript function in PHP to display modal not displaying properly
我这里有一个代码,用于在文本框未填充时显示Javascript模式(单击发送按钮时,它将检查未填充的文本框和复选框and show THE modal,如果一切正常,它将发送一封电子邮件…我先处理文本框)。但我在正确显示模态时遇到了一些问题。当我使用display:block时,它似乎会与表单中的其他对象一起显示。但当我将其设置为display:none时,即使单击发送按钮,也不会显示任何内容。
这是模态的CSS:
#overlay {
display: block;
position: absolute;
left: 0px;
top: 0px;
width:100%;
height:100%;
text-align:center;
z-index: 800;
}
#overlay div {
width:800px;
margin: 100px auto;
background-color: none;
border:none;
padding:15px;
text-align:center;
}
body {
height:100%;
width:100%;
margin:0;
padding:0;
overflow:auto;
}
HTML:
<div id="overlay">
<div>
<img src="images/NoUsername.png" alt="module" style="width:469px; height:345px;">
<p>[<a href='#' onclick='overlay()'>close</a>]</p>
</div>
我从http://raventools.com/blog/create-a-modal-dialog-using-css-and-javascript/
以下是用于检查文本框的PHP代码:
if ($username == "") {
echo
"<script type='"text/javascript'">
function overlay() {
el = document.getElementById('"overlay'");
el.style.visibility = (el.style.visibility == '"visible'") ? '"hidden'" : '"visible'";
}</script>";
}
我试着在这里使用双引号和单引号,但什么也没发生。我认为问题出在我的CSS中。请随意编辑我的代码。提前感谢你们的帮助!
正如我所评论的,在直接学习PHP和JavaScript等编程之前,您应该多学习一些CSS和HTML。在你真正从中学到有意义的东西之前,你的问题可能会被标记为低质量
我认为visibility
属性不适合您的需要,因为它在DOM中为元素分配空间,即使它是隐藏的。我还认为您应该在通过PHP(服务器端)或通过JavaScript(客户端)显示模态之间做出选择,因为您现在所做的事情变得非常混乱,对于新手来说更是如此。
我会将你的CSS修改为:
#overlay {
display: none; /* hidden if not overwritten by style="" attribute or javascript */
position: fixed; /* fixed makes more sense here as it doesn't depend on the element's parents, search for it */
...
如果您选择通过php显示或隐藏模态,它将类似于
<div id="overlay" <?php if ($username == "") echo 'style="display: block;"' ?>>
<div>
<img src="images/NoUsername.png" alt="module" style="width:469px; height:345px;">
...
或者,在我看来,最好的方法是完全用JavaScript(客户端),而不依赖php:
<script type="text/javascript">
function show_modal() {
el = document.getElementById("overlay");
el.style.display="block";
}
function hide_modal() { // You'll want to use this for the close button
el = document.getElementById("overlay");
el.style.display="none";
}
function verify_elements() {
el = document.getElementById("username");
if (el.value == '') {
show_modal(); // if the username is '', show'em the modal
return false; // returning false makes sure the form isn't submited
}
}
</script>
<form action="" method="post" onsubmit="verify_elements()">
<input name="username" id="username" value="" />
...
我希望这能帮助你们走上正确的道路。但是,如果你真的想学习而不是永远复制粘贴,你真的应该循序渐进:D
谨致问候!
我认为您错过了调用添加到页面的函数:
if ($username == "") {
echo
"<script type='"text/javascript'">
function overlay() {
el = document.getElementById('"overlay'");
el.style.visibility = (el.style.visibility == '"visible'") ? '"hidden'" : '"visible'";
}
overlay();
</script>";
}
此外,我认为覆盖应该默认隐藏:
#overlay {
display: block;
position: absolute;
left: 0px;
top: 0px;
width:100%;
height:100%;
text-align:center;
z-index: 800;
visiblity: hidden;
}
- 如果函数返回True,则显示Javascript按钮
- 背景图像前显示Javascript警报
- 为我的rails应用程序显示javascript弹出消息
- 如何在Javascript中显示Javascript变量
- 如何在colorbox中显示JavaScript变量
- Xamarin iOS WKWebView显示JavaScript警报
- GoogleMapsV3api只显示Javascript循环中的一些标记
- 如何在Asp.net标签控件中显示Javascript函数值
- 如何在对话框中显示javascript变量
- 在asp.net页面中显示javascript执行过程中的加载图标
- 在html中显示javascript变量won'不起作用
- 如何使用按钮在对话框上显示 Javascript 函数的结果
- 打开新窗口进行打印时不显示 JavaScript 图像
- 显示javascript控制台中的消息
- 在加载html网页时显示JavaScript表
- 在Notepad++中更好地突出显示Javascript语法
- 通过php显示javascript内容
- 文本字段未显示javascript函数中的变量
- 显示Javascript表单验证消息
- VB.NET-WebBrowser没有't在html源代码中显示javascript创建的html元素