C# 比较验证器不';不要停止回发 下面是我的分数。
当我将日期更改为错误格式时,会立即显示错误消息 但当我点击“btnSaveChanges”按钮时,它会进行回发。我认为缺少了一些东西,因为它正在进行回发 谁能帮我解决这个问题。如果验证失败,我想停止回发C# 比较验证器不';不要停止回发 下面是我的分数。,c#,asp.net,postback,buttonclick,comparevalidator,C#,Asp.net,Postback,Buttonclick,Comparevalidator,当我将日期更改为错误格式时,会立即显示错误消息 但当我点击“btnSaveChanges”按钮时,它会进行回发。我认为缺少了一些东西,因为它正在进行回发 谁能帮我解决这个问题。如果验证失败,我想停止回发 谢谢。这是因为您使用了: Below is my mark up. <asp:TextBox ID="txtPatientDateOfBirth" runat="server" CssClass="rightDivInnerControls" ClientIDMode="S
谢谢。这是因为您使用了:
Below is my mark up.
<asp:TextBox ID="txtPatientDateOfBirth" runat="server"
CssClass="rightDivInnerControls" ClientIDMode="Static"
CausesValidation="True">
</asp:TextBox>
<asp:CompareValidator ID="cvPatientDateOfBirth" runat="server"
ErrorMessage="Enter proper date."
Type="Date" ControlToValidate="txtPatientDateOfBirth" Font-Bold="True"
Operator="DataTypeCheck"
ValidationGroup="FirstPreview">
</asp:CompareValidator>
<asp:Button ID="btnSaveChanges" runat="server"
Text="Save Changes" OnClientClick="return showFinalReviewAlert();"
CssClass="btnPrimary hideInPrint btnEditFinalReport"
ValidationGroup="FirstPreview"
onclick="btnSaveChanges_Click" ClientIDMode="Static"/>
您在showFinalReviewAlert()中的操作;“
在showFinalReviewAlert();“
中可以执行的操作是添加returnfalse
,这将停止页面的回发
OnClientClick="return showFinalReviewAlert();"
函数showFinalReviewAlert(){
//
//你的编码材料。。。
//
返回false;
}
实际上,这些ASP.NET验证器的工作方式(此处描述:)与您所期望的有点不同——它应该是回发的。从链接的MSDN文档:
当用户向服务器提交页面时,验证控制
调用以逐个控件检查用户输入。如果
在页面的任何输入控件中检测到验证错误
它本身设置为无效状态,因此您可以在
您的代码正在运行。
我的。当他们说“将页面设置为无效状态”时,他们指的是属性。因此,当您运行服务器端代码时,您需要将其包装在一个块中,如下所示:
<script language="javascript">
function showFinalReviewAlert() {
//
// Your coding stuffs...
//
return false;
}
</script>
为了完全防止回发,您只需使用JavaScript(客户端代码)即可禁用submit按钮,直到所有控件都处于有效状态。通过返回值
showFinalReviewAlert()
在按钮的OnClientClick
中,您正在阻止页面验证的发生
这实际上就是正在呈现的HTML(为查看而简化)
这意味着,无论showFinalReviewAlert()
返回什么,都将无法访问WebForm\u DoPostBackWithOptions
。但是,由于它是一个
,因此页面无论如何都会将包发布到服务器
因此,如果showFinalReviewAlert
的返回值必须通过返回值false
来阻止回发,则应将OnClientClick
属性设置为如下
onclick="return showFinalReviewAlert();WebForm_DoPostBackWithOptions....
换句话说,如果showFinalReviewAlert
returnfalse
,则停止按钮继续任何回发处理。。。但如果返回true
,则允许进行回发验证
另一方面,如果showFinalReviewAlert()
的结果无关紧要。。。只需删除返回
即可简单地给出
OnClientClick="if(showFinalReviewAlert()==false){return false;}"
在服务器控件asp:按钮中添加OnClientClick和Onclick事件 asp:ButtonID=“btnSave”runat=“server”Text=“Save”OnClick=“btnSave\u OnClick”OnClientClick=“if(validateTotal()==false){return false;}” 如果函数OnClientClick事件返回false,则不会回发 您的validateTotal()可能是这样的
OnClientClick="showFinalReviewAlert();"
您在
文本框
控件中缺少ValidationGroup
function validateTotal()
{
if (parseInt($('.lblTotal').text().trim()) > 100) {
alert("Please check total value, it should not be more than 100%");
return false;
}
}
输入CausesValidation=“True”button@WaqarJanjua默认情况下为true,因此这可能不是这里的解决方案。@jadarnel27是。但是我在msdn上看到了下面的帖子,所以我请他试着让你从showFinalReviewAlert
返回true
?因为我猜您正在覆盖验证器停止按钮的功能,单击尝试删除onclientclickt在showFinalRevieware()中有很多客户端内容。无法删除此内容:(感谢您的时间。我得到了答案。我需要有条件地从showFinalReviewAlert()返回true/false。@VishalSuthar OP说“我认为缺少某些内容,因为它正在进行回发。”我回答的似乎是困惑的根源——对ASP.NET验证程序控件如何工作的误解。@jadarnel27这解决了将我带到这一页的问题,为此我为您鼓掌,先生。您将我从已经非常震惊的事情中解救出来,并帮助我完成了一个已经过期的项目d今天…@realto 619很高兴我能帮上忙!好消息@Rain,很高兴能帮上忙:-)祝你余下的项目好运!
OnClientClick="showFinalReviewAlert();"
function validateTotal()
{
if (parseInt($('.lblTotal').text().trim()) > 100) {
alert("Please check total value, it should not be more than 100%");
return false;
}
}
<asp:TextBox ID="txtPatientDateOfBirth" runat="server"
CssClass="rightDivInnerControls" ClientIDMode="Static"
CausesValidation="True"
ValidationGroup="FirstPreview">
</asp:TextBox>