我有一个在updatePanel中的表单,我有一个隐藏加载图像的范围,我想在用户点击提交按钮时显示,但我首先需要检查页面在客户端是否有效。此外,我正在使用jQuery显示加载范围。这是我的代码:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
function showLoading() {
$('#loader').show();
}
</script>
</head>
<body>
<asp:ScriptManager ID="smMain" runat="server"></asp:ScriptManager>
<asp:UpdatePanel ID="upForm" runat="server">
<ContentTemplate>
<asp:MultiView ID="mvContact" runat="server" ActiveViewIndex="0">
<asp:View ID="vDefault" runat="server">
<asp:TextBox ID="tEMail" runat="server" CssClass="input" />
<asp:RequiredFieldValidator ID="rfvEMail" runat="server" ControlToValidate="tEMail" ErrorMessage="* required" Display="Dynamic" />
<asp:RegularExpressionValidator ID="revEMail" runat="server" ControlToValidate="tEMail" ErrorMessage="* invalid" Display="Dynamic" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" />
<asp:ImageButton ID="btnSubmit" runat="server" ImageUrl="~/Assets/Images/btnSubmit.png" ToolTip="Submit Form" style="margin:5px 5px 0 -5px" onclick="btnSubmit_Click" OnClientClick="showLoading();" />
<span id="loader"><img src="Assets/Images/loader.gif" title="Sending..." /></span>
</asp:View>
<asp:View ID="vResult" runat="server">
<div class="result">
<span id="lResult" runat="server">Your message is sent</span>
</div>
</asp:View>
</asp:MultiView>
</ContentTemplate>
</asp:UpdatePanel>
</body></html>
答案 0 :(得分:13)
好的,我找到了解决方案。 Page_ClientValidate()可以解决问题。
function showLoading() {
if (Page_ClientValidate()) { $("#loader").show(); }
else { alert("Form is invalid!"); }
}
答案 1 :(得分:3)
我认为最好使用属性Page_IsValid而不是方法Page_ClientValidate()。
function showLoading() {
if (Page_IsValid) { $("#loader").show(); }
else { alert("Form is invalid!"); }
}
答案 2 :(得分:1)
如果您不想调用Page_ClientValidate(),可以使用Page_IsValid但设置超时,以便首先进行验证。
OnClientClick="javascript:setTimeout(function() { if (Page_IsValid) document.getElementById('preloader').style.display='block';}, 1000);"
预加载器隐藏在中间
<img src="/images/preloader.gif" id="preloader" style="display:none; position: fixed; top: 50%; left: 50%; margin-top: -50px; margin-left: -100px;" />
答案 3 :(得分:0)
谢谢你,哈哈,你结束了我的一天:)
我想分享一下我的问题和解决方案。我有一个使用MasterPage的ASP.NEt页面。提交表单时,我使用了fadeOut效果来隐藏按钮。但是,如果表单没有完成,按钮就消失了。我只是在OP问题上添加了一个关于hasan建议的条件。这是我的最终代码。
//Fade out buttons when clicked but only if page validate
$('.button').click(function () {
if (Page_ClientValidate()) { $('.button').fadeOut('slow'); }
});//End of Fade out buttons
再次感谢哈桑:)