【问题标题】:Enabling - but not firing - a RequiredValidator using jQuery / javascript启用 - 但不触发 - 使用 jQuery / javascript 的RequiredValidator
【发布时间】:2011-06-14 13:27:23
【问题描述】:

我有一个可能包含 10 个字段的表单。其中一个字段是复选框,默认未选中,并且表单上的许多字段仅在选中该框时才启用+必填。我已经成功地找到了如何调用 ValidatorEnable(requiredFieldValidator, true) 来处理这个问题(我已经检查了很多关于这个主题的 StackOverflow 问题)。

 function toggleStatus() {
          if ($('#ctl00_main_chkContactMe').is(':checked')) {
              $('#elementsToOperateOn :input').removeAttr('disabled');
              $('#elementsToOperateOn label').removeClass('off');
              ValidatorEnable($("[id$=RequiredFieldValidator1]")[0], true);
              ValidatorEnable($("[id$=RequiredFieldValidator2]")[0], true);
          } else {
              $('#elementsToOperateOn :input').attr('disabled', true);
              $('#elementsToOperateOn label').addClass('off');
              ValidatorEnable($("[id$=RequiredFieldValidator1]")[0], false);
              ValidatorEnable($("[id$=RequiredFieldValidator2]")[0], false);
          }
      }

但是,我遇到了一个尚未解决的问题。当我的用户选中该框并且这些字段现在已启用并需要时,我的验证器会立即触发其“此字段是必需的”消息。这是在用户甚至有机会输入任何内容之前,所以这不是一个很好的用户体验。我可以告诉验证器什么让它知道,即使我启用它,“这个字段还没有获得焦点,所以在有人故意将其留空之前不要显示错误消息”?

【问题讨论】:

    标签: javascript jquery asp.net requiredfieldvalidator


    【解决方案1】:

    我遇到了同样的问题并使用此代码解决了它:

    var myValidator = document.getElementById('<%=myValidator.ClientID %>');
    ValidatorEnable(myValidator, true);
    myValidator.isvalid = true;
    ValidatorUpdateDisplay(myValidator);
    

    第三行可能看起来有点奇怪,但验证器稍后将在任何更改或从页面发布时进行验证。

    你也可以试试这个功能:

    function myValidatorEnabler(validator, enable) {   
        validator.enabled = enable;
        ValidatorUpdateDisplay(validator);
    }
    

    【讨论】:

      【解决方案2】:

      在提交之前不要启用它们,我认为您应该能够在提交时启用它们,而不是使用通过使用 RegisterOnSubmitStatement 调用的 javascript 函数,它会在验证 afaik 之前触发。

      http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registeronsubmitstatement.aspx

      这样您就不必回帖了。

      【讨论】:

        【解决方案3】:

        默认情况下,您的必填字段验证器已启用(如果没有,则启用)。所以只使用那些需要它禁用的条件,你就完成了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-12
          • 1970-01-01
          • 2017-04-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-02-02
          • 1970-01-01
          相关资源
          最近更新 更多