【发布时间】:2013-08-25 18:09:22
【问题描述】:
我在这里有一个代码,旨在在未填充文本框时显示 Javascript 模式(单击发送按钮时,它将检查未填充的文本框和复选框并显示模式,如果一切正常,它将发送一个电子邮件...我首先在文本框上工作)。但是我在正确显示模态时遇到了一些问题。好像当我使用 display: block 时,它将与表单中的其他对象一起显示。但是当我将其设置为显示时:无,即使单击发送按钮后也不会显示任何内容。
这是 modal 的 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 中。请随时编辑我的代码。提前感谢您的帮助!
【问题讨论】:
-
如果您不想将该 HTML/JS 放在不同的文件中并包含它,那么您可以使用
?> <html> <?php将其混合在一起。无论哪种方式,您都摆脱了所有那些转义的双引号。您也可以在整个字符串周围使用单引号,但不要这样做,混合 PHP 和 HTML/JS 是不好的做法。 -
嗨,塞尔吉!我试过使用 ?>
-
或者如果我把它放在单独的javascript中,我该怎么做才能调用该函数?
-
如果需要,请使用
echo '<script type="text/javascript">... el = document.getElementById("overlay"); ...</script>';注意单引号。然后你可以在里面使用未转义的双引号。如果这不起作用,那么 JavaScript 本身就有问题。 -
我尝试了您的建议,我认为它确实有效。但我现在的问题是我的 CSS 设置为 display: none (我也尝试过可见性: hidden),以便首先隐藏模式。但即使 z-index 设置为 800,它也不会显示单击按钮的时间。希望您也能帮助我。对不起,如果我在这里有很多问题。谢谢:)
标签: php javascript html css