使用 Javascript 在 ASP.net 中获取自定义验证器控件的参数?
所以我有一个我正在使用 ClientValidationFunction 捕获它的事件。
我遇到的问题是,我正在用它做一些过程,这个过程的结果应该确定 args.IsValid 应该是 true 还是 false。但我捕获的结果是在回调中,我似乎找不到访问参数的方法。
我已经在全局定义了一个 var Args 并尝试从那里获取值;无法得到它。
我尝试通过 userContext 发送它;没用(认为它只接受字符串)。
我尝试通过 document.getElementById 获取验证器,但找不到 args 属性。这是我最符合逻辑的一个,但我似乎找不到它。
我写的javascript代码是这样的;
function ValidateUserMail(oSrc, args) {
var myField = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("Email").ClientID %>');
PageMethods.IsMailAvailable(myField.value, OnSucceeded);
}
//i need to edit args value from this function below.
function OnSucceeded(result, userContext, methodName) {
if (methodName == "IsMailAvailable")
if (!result) {
var myValidator = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("UniqueEmailRequired").ClientID %>');
myValidator.args = false; //doesn't work any ideas about the working property?
}
}
我在 aspx 中为验证器编写的代码如下;
<asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email"
CssClass="failureNotification" ErrorMessage="E-mail is required." ToolTip="E-mail is required."
ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
<asp:CustomValidator ID="UniqueEmailRequired" runat="server" ControlToValidate="Email"
CssClass="failureNotification" ErrorMessage="Unique E-mail is required." ToolTip="Unique E-mail is required."
ValidationGroup="RegisterUserValidationGroup" ClientValidationFunction="ValidateUserMail">*</asp:CustomValidator>
多谢!
更新;在浏览器中为 uniqueEmailValidator Javascript 呈现 html;
var MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired = document.all ? document.all["MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired"] : document.getElementById("MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired");
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.controltovalidate = "MainContent_RegisterUser_CreateUserStepContainer_Email";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.errormessage = "Unique E-mail is required.";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.validationGroup = "RegisterUserValidationGroup";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.evaluationfunction = "CustomValidatorEvaluateIsValid";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.clientvalidationfunction = "ValidateUserMail";
So i have a which i'm catching the event of it with the ClientValidationFunction.
The problem i'm having is, i'm doing some process with it and outcome of this process should determine whether the args.IsValid should be true or false. But the results i'm catching are in callback where i can't seem to find a way to acces args.
I've defined a var Args globaly and tried to get the value from there; couldn't get it.
I've tried to send it via userContext; no use (think it only accepts string).
I've tried to get the validator by document.getElementById, and i couldn't find the args property. This one is the one i'm most logical to me but i can't seem to find it.
The javascript code i wrote is as this;
function ValidateUserMail(oSrc, args) {
var myField = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("Email").ClientID %>');
PageMethods.IsMailAvailable(myField.value, OnSucceeded);
}
//i need to edit args value from this function below.
function OnSucceeded(result, userContext, methodName) {
if (methodName == "IsMailAvailable")
if (!result) {
var myValidator = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("UniqueEmailRequired").ClientID %>');
myValidator.args = false; //doesn't work any ideas about the working property?
}
}
and the code i wrote in aspx for validator is as this;
<asp:RequiredFieldValidator ID="EmailRequired" runat="server" ControlToValidate="Email"
CssClass="failureNotification" ErrorMessage="E-mail is required." ToolTip="E-mail is required."
ValidationGroup="RegisterUserValidationGroup">*</asp:RequiredFieldValidator>
<asp:CustomValidator ID="UniqueEmailRequired" runat="server" ControlToValidate="Email"
CssClass="failureNotification" ErrorMessage="Unique E-mail is required." ToolTip="Unique E-mail is required."
ValidationGroup="RegisterUserValidationGroup" ClientValidationFunction="ValidateUserMail">*</asp:CustomValidator>
Thanks a lot!
Update; rendered html for uniqueEmailValidator Javascript in browser;
var MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired = document.all ? document.all["MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired"] : document.getElementById("MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired");
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.controltovalidate = "MainContent_RegisterUser_CreateUserStepContainer_Email";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.errormessage = "Unique E-mail is required.";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.validationGroup = "RegisterUserValidationGroup";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.evaluationfunction = "CustomValidatorEvaluateIsValid";
MainContent_RegisterUser_CreateUserStepContainer_UniqueEmailRequired.clientvalidationfunction = "ValidateUserMail";
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
args 中有两个属性
Value
和IsValid
尝试
there are two properties in args
Value
andIsValid
try
试试这个:
Try this: