Rhy*_*nne 11 javascript css safari jquery
我在提交表单时无法正确显示Safari中的奇怪问题.
应该发生的情况是,单击表单上的提交按钮时,叠加层将显示在表单上.
发生的事情是没有任何东西出现(虽然看起来好像有些东西,因为我无法再次点击所述按钮).有趣的是,如果我取消页面加载,则会出现叠加层.
这是在提交表单时运行的javascript代码.
function main_form_overlay() {
var form_outer = jQuery('.main-form'),
form = jQuery('.main-form form'),
html,
overlay;
html = '<div class="loading"><span class="text">Checking 77 Destinations, please Be Patient <i class="fa fa-circle-o-notch fa-spin"></i></span></div>';
form_outer.append(html);
overlay = jQuery('.main-form .loading');
form.on('submit', function(){
console.log("In Here!");
if (!overlay.is(':visible')) {
overlay.show();
console.log("Show Overlay");
} else {
overlay.hide();
console.log("Hide Overlay");
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是"加载"类的CSS,它的价值.
.loading {
background: rgba(#999, 0.9);
bottom: -10px;
display: none;
left: -20px;
position: absolute;
right: -20px;
top: -10px;
.text {
color: #fff;
font-size: 26px;
font-weight: 700;
left: 0;
position: absolute;
top: 50%;
transform: translateY(-50%);
width: 100%;
}
}
Run Code Online (Sandbox Code Playgroud)
JavaScript正在加载(控制台分别记录"在此处"和"显示叠加"短语,如果取消,则显示叠加).但是,点击时不会显示叠加层.
我试过以下浏览器,成功....
任何想法都会有所帮助.如果您还有其他需要,请告诉我.
顺便说一句,我设法解决了这个问题,@PeterTheLobster 最接近。
简而言之,在附加到“click”侦听器时,我们然后 e.preventDefault(); 表单,通过延迟表单提交 1 秒来确保显示叠加层。
function main_form_overlay() {
var form_outer = jQuery('.main-form'),
form = jQuery('.main-form form'),
html,
overlay;
html = '<div class="loading-overlay"><span class="text">Checking 77 Destinations, please Be Patient <i class="fa fa-circle-o-notch fa-spin"></i></span></div>';
form_outer.append(html);
overlay = jQuery('.main-form .loading-overlay');
jQuery('#gform_submit_button_2').on('click', function(event){
//Prevent the form from submitting
var e = event || window.event;
e.preventDefault();
console.log("In Here!");
if (!overlay.is(':visible')) {
overlay.show();
console.log("Show Overlay");
} else {
overlay.hide();
console.log("Hide Overlay");
}
//Submit the form now
window.setTimeout(function() {
form = jQuery('.main-form form');
form.submit();
},1000);
});
}
Run Code Online (Sandbox Code Playgroud)