【问题标题】:Getting args of Custom Validator control in ASP.net with Javascript?使用 Javascript 在 ASP.net 中获取自定义验证器控件的参数?
【发布时间】:2011-07-17 16:49:22
【问题描述】:

所以我有一个我正在使用 ClientValidationFunction 捕获它的事件。

我遇到的问题是,我正在用它做一些过程,这个过程的结果应该确定 args.IsValid 是真还是假。但我正在捕捉的结果是在回调中,我似乎无法找到访问 args 的方法。

我已经在全局范围内定义了一个 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";

【问题讨论】:

    标签: javascript asp.net validation callback customvalidator


    【解决方案1】:

    args中有两个属性Value和IsValid
    试试

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

    【讨论】:

    • 谢谢!!为您提供极快的答案,但我收到此错误; Microsoft JScript 运行时错误:无法设置属性“值”的值:对象为空或未定义(第一行)和 Microsoft JScript 运行时错误:无法设置属性“IsValid”的值:对象为空或未定义(第二行)
    • 您是否在 IE 或其他浏览器中也遇到此错误.. 尝试其他浏览器,您能否发布呈现的 html
    • 我很抱歉之前的评论,我重建了解决方案,但我不知道为什么,但它给了我错误:Microsoft JScript 运行时错误:'ValidateUserMail' 未定义。现在我不记得改变了什么,但我会专注于它。我在其他浏览器上尝试过,因为没有附加调试器,所以它们没有给我任何错误,但也没有任何反应。我正在使用呈现的 html 更新答案。再次感谢您的帮助!
    • 感谢您的帮助,感谢您的帮助,我查看了谷歌 vith args.isvalid,并找到了一些可能有帮助的文章,并据此更改了代码!因此,我正在标记您的答案。干杯。
    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 感谢您的回答!当我第一次看到它时,我的眼睛闪闪发光,但这并没有什么区别,因为它仍在函数标签中,它看不到父函数中的 args。
    猜你喜欢
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多