我正在尝试运行一些客户端脚本,如果并且仅在时,客户端页面验证失败,并且无法确定我可以将其挂钩的位置。
如果我将我的JavaScript函数绑定到提交表单的按钮的OnClientClick,它将在客户端验证之前运行。如果我将它绑定到表单的OnSubmit,那只有在验证通过时才会触发。
关于如何或在哪里勾选这样的东西的任何想法?或者如果您有其他建议,我会向他们开放。
<form id="frm" runat="server"
onsubmit="FUNCTION HERE WONT FIRE IF VALIDATION FAILS">
<asp:requiredfieldvalidator id="vld" runat="server" controltovalidate="txt"/>
<asp:textbox id="txt" runat="server"></asp:textbox>
<asp:button id="cmd" runat="server" OnClick="dosomething"
OnClientClick="FUNCTION FIRES BEFORE VALIDATION OCCURS">
</form>
答案 0 :(得分:16)
在页面末尾的标记文件中添加以下脚本:
var originalValidationFunction = Page_ClientValidate;
if (originalValidationFunction && typeof (originalValidationFunction) == "function") {
Page_ClientValidate = function (validationGroup) {
originalValidationFunction(validationGroup);
if (!Page_IsValid) {
// your code here
alert("oops!");
}
};
}
答案 1 :(得分:11)
尝试使用Page_ClientValidate("")
从JavaScript触发验证,然后您可以运行一些自定义代码:
validate = function(){
var isValid = Page_ClientValidate(""); //parameter is the validation group - thanks @Jeff
if (isValid){
isValid = somethingToCheck();
}
return isValid;
}
<asp:Button ID="Button1" runat="server" CausesValidation="false" OnClientClick="return validate();" ... />
答案 2 :(得分:2)
所以你有两个选择如何处理它:
使用提供CustomValidator功能的ClientValidationFunction验证程序,在您的自定义验证功能中,显然您知道验证是否失败。它通过接受在验证时使用的JavaScript函数,为您提供客户端验证所需的灵活性。
通过从JavaScript(+ jQuery)访问验证者的isValid属性,通过JavaScript访问验证验证器:
var anonymousValidator = $("#<%= vldCommentText.ClientID %>")[0];
ValidatorEnable(anonymousValidator, true);
if (!anonymousValidator.isvalid)
{
// ...
}