我编写了一个使用ASP.NET CustomValidator来验证文本字段(客户端)输入的网页。文本字段使用JQuery UI自动完成 - 这是我遇到问题的地方。
验证器工作得很好。但是,如果验证失败并且用户收到错误消息,则用户将返回文本字段并输入新值 - 从自动完成插件的下拉菜单中进行选择。现在,当选择了新值并且用户离开输入字段时,验证代码不会再次触发。我怀疑这是因为,由于某种原因,当值来自自动完成帮助程序时,没有检测到文本被更改。这有意义吗?
当用户从字段中移除焦点时,是否有人知道如何通过CustomValidator强制字段进行验证?
继承人CustomValidator:
<asp:CustomValidator EnableClientScript="True" runat="server" ControlToValidate="tbInput"
ID="inputCustomValidator" ClientValidationFunction="validateFunction" ErrorMessage="Not valid"
Display="Dynamic" ValidationGroup="ValidationGrp1" />
调用的javascript并不有趣 - 因为它没有被调用。这就是我想要实现的目标。
答案 0 :(得分:2)
我找到了一种方法来做到这一点。在javascript中,我向我想要验证的元素添加了一个blur()函数,并使该函数触发了Page_ClientValidate('validationGroupName')。对我来说很新的功能。
$('.elementToValidate').blur(function () {
Page_ClientValidate('ValidationGrp1');
});
答案 1 :(得分:0)
这可能不是你想听到的,但我会尽量避免混合使用jQuery和ASP.net的Javascript - 它们不会很好地播放。
在您的情况下,我建议您转储您的ASP.net CustomValidator
并切换到jQuery的Validate plugin。这将在jQuery UI中发挥得更好。
答案 2 :(得分:0)
您还可以使用autoselect的select:handler来触发验证。
$(".someClass").autocomplete({
select: function(event, ui)
{
Page_ClientValidate(ui);
}
});
答案 3 :(得分:0)
我通过为文本框设置onBlur事件来实现此目的。
<asp:TextBox ID="TextBox1" runat="server" onBlur="Page_ClientValidate('ValidationGrp1');"></asp:TextBox>
(假设您的CustomValidator&#39; ValidationGroup是&#39; ValidationGrp1&#39;)