使用一个简单的CSS模式弹出窗口来显示一个表单(重力表单),它按预期工作,但我想让用户体验更好。
当前按下模式按钮时
<label class="button success tiny" for="modal-1">Email this user</label>
弹出模态窗口,并在模态框中显示触点形式。然而,在提交表格后,表格会显示一条消息,如“您的提交已收到,我们将很快联系”。
由于提交表单后,模式关闭,因此无法看到。这意味着用户必须再次按下模式按钮,以确保他们已提交查询。
这是与上面的model(型号)按钮一起使用的模式代码:
<input class="modal-state" id="modal-1" type="checkbox" />
<div class="modal">
<label class="modal__bg" for="modal-1"></label>
<div class="modal__inner">
<label class="modal__close" for="modal-1"></label>
<h2>Modal Inside Title</h2>
<p><?php echo do_shortcode(\'[gravityform id="80" title="false" description="false"]\'); ?>
</p>
</div>
</div>
以及当前使用的CSS:
/* [Object] Modal
* =============================== */
.modal {
opacity: 0;
visibility: hidden;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
text-align: left;
background: rgba(0,0,0, .9);
transition: opacity .25s ease;
}
.modal__bg {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
cursor: pointer;
}
.modal-state {
display: none;
}
.modal-state:checked + .modal {
opacity: 1;
visibility: visible;
}
.modal-state:checked + .modal .modal__inner {
top: 0;
}
.modal__inner {
transition: top .25s ease;
position: absolute;
top: -20%;
right: 0;
bottom: 0;
left: 0;
width: 50%;
margin: auto;
overflow: auto;
background: #fff;
border-radius: 5px;
padding: 1em 2em;
height: 50%;
}
.modal__close {
position: absolute;
right: 1em;
top: 1em;
width: 1.1em;
height: 1.1em;
cursor: pointer;
}
.modal__close:after,
.modal__close:before {
content: \'\';
position: absolute;
width: 2px;
height: 1.5em;
background: #ccc;
display: block;
transform: rotate(45deg);
left: 50%;
margin: -3px 0 0 -1px;
top: 0;
}
.modal__close:hover:after,
.modal__close:hover:before {
background: #aaa;
}
.modal__close:before {
transform: rotate(-45deg);
}
@media screen and (max-width: 768px) {
.modal__inner {
width: 90%;
height: 90%;
box-sizing: border-box;
}
}
我想知道是否有一个功能,我可以添加,这将保持在表单提交后打开模式。
最合适的回答,由SO网友:WebElaine 整理而成
PHP和JS的组合可以做到这一点。
让您的页面侦听gform_submit
默认情况下,重力形状在所有形状上都包含一个隐藏字段。
if(!empty($_POST[\'gform_submit\'])) {
// now here comes your javascript
}
对于JS,请将模态状态设置为选中状态。这样,在页面加载时,如果表单已经提交,JS将触发CSS,使模式可见。
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery("#modal-1").prop("checked", true);
});
</script>
您也可以在vanilla JS中完成,但我假设如果您使用modals之类的工具,那么您可能有jQuery可用。
不确定您的用例是什么,但明智的做法是检查您的解决方案对屏幕阅读器、键盘用户等的可访问性。