onsubmit() 触发但不更改移动设备上的元素样式

onsubmit() fires but makes no changes to element style on mobile

我试图在用户提交表单时在屏幕顶部显示模式 window。 我想禁用表单(显示一些加载图标)以显示该按钮已被单击并且正在处理操作,因为有时在移动设备上它对我们的用户来说不是那么清楚

在 PC 浏览器(Firefox、IE、Opera)上一切正常,但在 Android 或 WP 8.1 div 上,提交表单后不会显示叠加层。

你知道如何解决这个问题吗? 也许其他一些方法?

我的示例代码:

<script type="text/javascript">
        function ShowLoadingPanel() {
            document.getElementById('loadingPanel').style.display = 'block';
            document.getElementById('overlay').style.display = 'block'
        }
 </script>

<body>
 <div id="loadingPanel" class="loadingPanelStyle"></div>
 <div id="overlay" class="blackOverlay">    </div>
 <form id="form1" runat="server" onsubmit="return ShowLoadingPanel();">
    //some content
     <asp:Button runat="server" ID="xNext" Text="Next" OnClick="xNext_Click" />
 </form>
</body>

还有一些 CSS 模态 window

.loadingPanelStyle
{
    display: none;
    position: fixed;
    background:url(../img/load2.gif) no-repeat center center;
    top: 25%;
    left: 25%;
    width: 50%;
    height: 50%;
    font-size: small;
    z-index: 1002;
    overflow: auto;
}

.blackOverlay
{
    display: none;
    position: fixed;
    top: 0%;
    left: 0%;
    width: 100%;
    height: 100%;
    background-color: black;
    z-index: 1001;
    -moz-opacity: 0.8;
    opacity: .80;
    filter: alpha(opacity=80);
}

您应该输入 .preventDefault() 以阻止表单提交

<script type="text/javascript">
            function ShowLoadingPanel(e) {
                e.preventDefault();
                document.getElementById('loadingPanel').style.display = 'block';
                document.getElementById('overlay').style.display = 'block'
                setTimeout(function(){ 
                    $(this).submit(); 
                }, 3000);
            }
     </script>

请试试这个。删除 javascript 并添加 jquery 函数。

$("#loadingPanel").show();

$("#overlay").show();

在@Velimir Tchatchevsky 的一些提示后,我找到了有效的解决方案。

function ShowLoadingPanel() {
        document.getElementById('loadingPanel').style.display = 'block';
        document.getElementById('overlay').style.display = 'block';

        setTimeout(function(){ 
            document.getElementById('form1').submit();
        }, 100);
        return false;
}

但奇怪的是,在 WP8.1 (Internet Explorer) 和 Android 4(默认浏览器)上,必须使用 setTimeout() 函数来推迟提交操作。 是一些移动优化还是什么? 谢谢大家的帮助!