验证控件验证失败后是否有调用JavaScript函数?.net验证器失败后调用javascript
2
A
回答
2
查看MSDN的文章“ASP.NET Validation in Depth” - 特别感兴趣的部分是提供客户端API的Client Side Validation。您可以使用验证器对象的isvalid属性来决定它的有效与否。 Validator对象(在客户端)可以使用服务器端验证器控件的ClientID属性来引用。
之一的方式来实现你想要可以
- 关闭ASP.NET验证什么被JS设置变量
Page_ValidationActive
假 - 当后回用
Page_Validators
财产,并通过所有验证发生迭代验证每个呼叫ValidatorValidate
。 - 如果感兴趣的验证器无效,请调用您的函数。
2
有一个无证的方法。这取决于微软不更改其用于客户端验证的JavaScript方法的名称,但幸运的是,它会优雅地降级,这意味着如果微软改变了某些东西,它不会使您的网站崩溃。
最低限度,您需要存储指向原始函数的指针,然后覆盖Microsoft正在调用的函数。
var pointerToMicrosoftValidator = ValidatorUpdateIsValid;
ValidatorUpdateIsValid = function() {
pointerToMicrosoftValidator();
// do something after Microsoft finishes
}
由于您只想在这里你无法通过验证,你应该检查,如果页面是从调用返回后有效的做一些事情:
var pointerToMicrosoftValidator = ValidatorUpdateIsValid;
ValidatorUpdateIsValid = function() {
pointerToMicrosoftValidator();
if (Page_IsValid) {
alert("Passed Validation");
} else {
alert("Failed Validation");
}
// do something after Microsoft finishes
}
我发现这是非常重要的测试验证被用在我认为是的页面上,以防我的团队中有人在不删除我的javascript的情况下删除验证器。因此,我增加一个检查:
if (window.ValidatorUpdateIsValid) {
alert("page with validator");
}
最后,我想确保我的函数创建微软创建自己的代码后,所以我包括在jquery.ready调用的定义。然后,我可以在验证之后通过替换“之后的警报”来调用方法。在开始实施之前,您应该删除所有警报。
$(document).ready(function() {
//intercept microsoftValidator
if (window.ValidatorUpdateIsValid) {
alert("page with validator");
var pointerToMicrosoftValidator = ValidatorUpdateIsValid;
ValidatorUpdateIsValid = function() {
alert("before");
if (window.pointerToMicrosoftValidator) {
pointerToMicrosoftValidator();
if (Page_IsValid) {
alert("Passed Validation");
} else {
alert("Failed Validation");
}
}
alert("after");
}
}
});
相关问题
- 1. 验证失败后未调用准备
- 2. JSF:验证失败javascript回调
- 3. Javascript表单验证失败
- 4. HTML/JavaScript验证失败
- 5. 的Net :: SSH :: AuthenticationFailed:验证失败
- 6. asp.net:验证失败后禁用回发
- 7. 自定义验证码调用失败
- 8. 验证失败
- 9. 验证失败
- 10. 验证失败
- 11. 验证失败
- 12. 验证失败
- 13. 使用javascript进行表单验证后注册失败
- 14. 窗体身份验证失败后升级到.NET 4
- 15. 如何在验证失败后在Knockout中调用ajax?
- 16. 服务器证书验证失败
- 17. SharpSVN - 服务器证书验证失败
- 18. NET C# - 页面验证后调用JavaScript方法?
- 19. JSF actionListener被调用,虽然从ace验证失败:textAreaEntry验证器
- 20. 使用rdrop2验证失败
- 21. Mongodb - 用户验证失败
- 22. 如果验证失败,请致电javascript
- 23. 验证失败时退出javascript代码
- 24. 从JavaScript调用后Applet URLConnection.connect失败
- 25. SVN验证失败
- 26. 验证SignUp失败
- 27. 验证失败2
- 28. XSD验证失败
- 29. PHP验证失败
- 30. XML验证失败
我试过这个解决方案,但它不但没有工作,而且禁用了验证。在覆盖'Page_ClientValidate'功能之后,就像他们在这里所做的那样:http://stackoverflow.com/a/7692484/1813219而不是'ValidatorUpdateIsValid'它像魅力一样工作。 – 2016-10-14 13:33:01
太棒了!可能是他们改变了我在我们职位之间的5年间所描述的无证方式。很高兴你找到了一个更好的解决方案。 – Jim 2017-03-08 16:22:17