【发布时间】:2011-06-23 16:23:58
【问题描述】:
我的 aspx 页面中的链接按钮上的原因验证存在问题。我拥有的是一个带有两个文本框、一些验证控件和一个提交按钮的页面。验证控件已启用客户端脚本设置为 true,并具有验证组。我的 asp 图像按钮分配了一个验证组,并导致验证等于 true。我将焦点设置到我的第一个文本框。
我的链接按钮是单击此处以了解更多关于.....并且我已经指定了验证组并将原因验证设置为 false。在 Chrome 中,一切正常。在 IE 中,当单击页面上除提交按钮之外的任何位置时,或单击我的链接按钮时,我的第一个文本框被验证并显示错误。现在,如果我再次单击链接按钮,我将被重定向到我想要的页面。
这对我来说有点奇怪,有人有什么想法吗?
那么,我该如何解决这个问题,这样 IE 才会验证,直到仅单击提交按钮。
我的代码如下所示:
<span>Value 1:</span>
<asp:TextBox ID="Value1TextBox" runat="server" />
<asp:RequiredFieldValidator ID="Value1_1_Validator" EnableClientScript="true" ControlToValidate="Value1TextBox" Display="Dynamic" ForeColor="Red" Text="is required" ValidationGroup="MyValGroup" runat="server" />
<asp:RegularExpressionValidator ID="Value1_2_Validator" EnableClientScript="true" ControlToValidate="Value1TextBox" ValidationExpression="\somevalexpression\" Display="Dynamic" ForeColor="Red" Text="is not valid" ValidationGroup="MyValGroup" runat="server" />
...
<span>Value 2:</span>
<asp:TextBox ID="Value2TextBox" runat="server" />
<asp:RequiredFieldValidator ID="Value2_1_Validator" EnableClientScript="true" ControlToValidate="Value2TextBox" Display="Dynamic" ForeColor="Red" Text="is required" ValidationGroup="MyValGroup" runat="server" />
...
...
<asp:ImageButton ID="SubmitButton" ImageUrl="~/Images/submit.png" OnClick="SubmitButton_Click" ValidationGroup="MyValGroup" CausesValidation="true" runat="server" />
...
<asp:LinkButton ID="OurPolicyLink" PostBackUrl="~/Policy.aspx" ValidationGroup="MyValGroup" CausesValidation="false" Text="click here" runat="server" />
我想出了一个使用 jquery 和 javascript 的修复程序,它不是那么干净,但它确实有效。我原以为只做等于 false 的原因验证就足够了。也许我错了。
我有一个脚本 javascript 文件,如下所示。
$(function () {
$"[id$=_Value1TextBox]").focus();
$("[id$=_Validator]").each(function () {
$(this)[0].enabled = false;
});
$("[id$=_SubmitButton]").click(function () {
$("[id$=_Validator]").each(function () {
$(this)[0].enabled = true;
});
Page_ClientValidate("MyValGroup");
if (!Page_IsValid) {
return false;
}
return true;
});
});
【问题讨论】:
标签: c# javascript jquery asp.net webforms