ASP CustomValidator不检测使用JQuery自动完成更改的文本

时间:2011-10-03 10:01:31

标签: asp.net jquery-ui validation autocomplete customvalidator

我编写了一个使用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并不有趣 - 因为它没有被调用。这就是我想要实现的目标。

4 个答案:

答案 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;)