简体   繁体   English

使用 Javascript 在 ASP.net 中获取自定义验证器控件的参数?

[英]Getting args of Custom Validator control in ASP.net with Javascript?

So i have a which i'm catching the event of it with the ClientValidationFunction.所以我有一个我正在用 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.我遇到的问题是,我正在用它做一些过程,这个过程的结果应该确定 args.IsValid 是真还是假。 But the results i'm catching are in callback where i can't seem to find a way to acces args.但是我正在捕获的结果是在回调中,我似乎无法找到访问 args 的方法。

I've defined a var Args globaly and tried to get the value from there;我已经定义了一个 var Args globaly 并试图从那里获取值; couldn't get it.无法得到它。

I've tried to send it via userContext;我试图通过 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.我试图通过 document.getElementById 获取验证器,但找不到 args 属性。 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;我写的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?
        }
}

and the code i wrote in aspx for validator is as this;我在 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>

Thanks a lot!非常感谢!


Update;更新; rendered html for uniqueEmailValidator Javascript in browser;在浏览器中为 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";

there are two properties in args Value and IsValid args ValueIsValid中有两个属性
try尝试

    myValidator.args.Value = '3434';
    myValidator.args.IsValid = true or false ;

Try this:尝试这个:

function ValidateUserMail(oSrc, args) {
        var myField = document.getElementById('<%=RegisterUserWizardStep.ContentTemplateContainer.FindControl("Email").ClientID %>');
        PageMethods.IsMailAvailable(myField.value, function (result, userContext, methodName) { args.IsValid = result; });
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM