Sri*_*ava 3 asp.net validation requiredfieldvalidator
我使用了必需的字段验证器,后跟一个正则表达式验证器,但是必需的字段验证器不工作.....
<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px"
CssClass="txtStyle" Font-Names="Arial" MaxLength="1000"
ValidationGroup="Valtxt" TabIndex="2" Rows="4">
</asp:TextBox>
<asp:RegularExpressionValidator ID="regValSummary" runat="server"
ControlToValidate="txtSummary" Display="Dynamic"
ValidationExpression="[^<>&#!]*" ValidationGroup="Valtxt">
Invalid characters(<>&#!) are not allowed
</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="reqvalSummary" runat="server"
ControlToValidate="txtSummary" ErrorMessage="Summary is required"
ValidationGroup="Valtxt" Display="Dynamic">
</asp:RequiredFieldValidator>
Run Code Online (Sandbox Code Playgroud)
任何人都可以看到问题???
该RequiredFieldValidator由客户端触发onchange事件.听起来你期望它被onblur事件触发,因此远离文本框的标签会触发验证.
在跳到那之前,我怀疑这是你所看到的并且验证它实际上是你需要触发的onchange.为此,请在文本框中输入一些文本,选项卡,选项卡,清除文本框,然后再次标记.您现在应该看到RequiredFieldValidator的错误消息,因为它的内容已更改.
回到这个onblur问题.要完成该行为,您可以onblur在代码隐藏中添加该属性,并让它调用ValidatorValidate(...)JavaScript方法,如下所示:
void Page_Load(object sender, EventArgs e)
{
txtSummary.Attributes.Add("onblur", "ValidatorValidate(" + reqvalSummary.ClientID + ")");
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以在标记中完成相同的操作.首先,添加此脚本块:
<script type="text/javascript">
function rfvBlur() {
var rfv = document.getElementById("<%= reqvalSummary.ClientID %>");
ValidatorValidate(rfv);
}
</script>
Run Code Online (Sandbox Code Playgroud)
其次,<asp:TextBox.../>通过添加更新标记onblur="rfvBlur()",使其现在看起来像这样:
<asp:TextBox ID="txtSummary" runat="server" TextMode="MultiLine" Width="700px" CausesValidation="true"
CssClass="txtStyle" Font-Names="Arial" MaxLength="1000" ValidationGroup="Valtxt"
TabIndex="2" Rows="4" onblur="rfvBlur()" />
Run Code Online (Sandbox Code Playgroud)
另一种选择是通过向<asp:TextBox.../>标记添加以下属性来验证整个ValidationGroup (不需要额外的脚本块):
onblur="Page_ClientValidate('Valtxt')"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29598 次 |
| 最近记录: |