【问题标题】:Validation fires even if whole TR is display:none即使显示整个 TR,验证也会触发:无
【发布时间】:2014-02-17 12:05:58
【问题描述】:

我有一个表格行如下

<tr id="trEm">
   <asp:TextBox ID="txtEmNumber" runat="server" Width="200" ToolTip="Enter Acknowledgement No." CssClass="body_text capital" MaxLength="16" TabIndex="6"></asp:TextBox>
   <asp:RequiredFieldValidator ID="rfvEm1Number" runat="server" SetFocusOnError="true" ValidationGroup="first" ErrorMessage="EM Part-I No. is required" ControlToValidate="txtEmNumber" Display="None" Text="*">
   <asp:ValidationSummary ID="vsFirstPanel" runat="server" ShowMessageBox="true" ShowSummary="false" ValidationGroup="first" />
</tr>

我使用 jQuery 应用了一些逻辑,在该行上应用 css 以显示类似

if ($(value).val() == '0' && $(value).is(':checked')) {       
   $('#trEm').css('display', 'none');
}

这运行良好,但是,即使 trEm 是 (display:none),必填字段的验证也会触发。

当该行处于不可见模式时如何防止此验证??

【问题讨论】:

    标签: javascript jquery asp.net validation


    【解决方案1】:

    试试,

       $('#trEm').is(':visible')
       {
           if ($(value).val() == '0' && $(value).is(':checked')) 
             {       
                $('#trEm').css('display', 'none');
             }
       }
    

    【讨论】:

    • @AijazChauhan 现在呢。?这样好吗?
    • 我还是不明白,文本框的验证触发,即使行是不可见的。
    • 当 trEm 设置为 display:none 时,我需要一些防止验证的逻辑
    • @AijazChauhan 抱歉,我刚刚提供了一个没有 # 的 id 选择器,现在试试。
    • @AijazChauhan 你能把你的情况做一个演示,以便我们轻松解决你的问题吗?
    【解决方案2】:

    您可以通过 jQuery 检查元素是否可见:

    selector = '#yourDiv';
    var visible = $(selector).is(":visible");
    

    当您使用移动设备时,您可以依赖现代浏览器。否则,此解决方案将无法在任何地方使用。

    【讨论】:

      【解决方案3】:

      我在这里找到了答案

                  $('[Id$="ibtnSubmitFirstPanel"]').click(function () {
                      var controles = [];
                      var visible;
      
                      for (var i = 0; i < Page_Validators.length; i++) {
      
                          var a = $('#' + Page_Validators[i].controltovalidate).parent().parent().attr("id");
                          if (typeof a !== 'undefined' && a !== false) {
      
                              controles.push(Page_Validators[i]);
                          }
                      }
                      $.each(controles, function (key, value) {
      
                          visible = $(controles[key]).parent().parent().is(':visible');
                          ValidatorEnable(controles[key], visible);
      
                      })
      
                      return Page_ClientValidate("first");
                  });
      

      请参考

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-14
        • 2016-02-25
        • 2011-02-11
        相关资源
        最近更新 更多