【发布时间】:2015-12-13 00:26:26
【问题描述】:
我有一种感觉,这可能是一个非常简单的问题,但我一生都无法弄清楚。
我有一个 asp:textbox。我有一个自定义验证器,它具有客户端和服务器端验证。
代码如下:
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
<asp:CustomValidator ID="vldFirstName" runat="server" ControlToValidate="txtFirstName"
ClientValidationFunction="ValidateName" OnServerValidate="vldFirstName_ServerValidate"
Text="Please put in your first name" ErrorMessage="First name missing"
ForeColor="Red" font-bold="true" Display="Dynamic"
ValidateEmptyText="true">
</asp:CustomValidator>
如果我直接进入我的页面并单击提交,这将在服务器端正确验证,将文本框留空。
但是通过客户端验证。如果我进入盒子并直接从盒子里出来而不输入任何东西。 javascript 验证不会触发。如果我再输入一些东西。留下这个框。返回并清除验证有效的框。它回来说它是空的。
但是我希望他们一进入盒子就让它进行验证。如果文本框未被触及,我不确定为什么验证器不会触发。
【问题讨论】:
-
查看
ValidateName代码可能会有所帮助。 -
@stuartd,验证代码现在很简单,检查长度是否大于 3 并且值不为空。每次调用客户端代码时,我都对其进行了调试并放置了一个断点。当我放入一些东西然后删除它时工作正常。但是如果它刚刚被跳过会触发
-
ValidateName表示跳过和放置/删除时输入值是什么? -
验证函数是否在
ValidateName(sender, args)上定义了正确的函数参数?是否需要更改 UnobtrusiveValidationMode 的应用设置? -
@Sam 我已经测试了您的代码,在我的测试应用程序中一切正常。如果您可以与我们分享 validateName 代码会更好,可能该代码或任何其他相关控件有问题导致此问题。
标签: javascript c# asp.net validation