即使显示整个TR,验证也会触发:无

时间:2014-02-17 12:05:59

标签: javascript jquery asp.net validation

我有一个表格行如下

<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所需字段的验证激活是(显示:无)。

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

3 个答案:

答案 0 :(得分:1)

尝试,

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

答案 1 :(得分:0)

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

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

在使用移动设备时,您可以依赖现代浏览器。否则这个解决方案无处不在。

答案 2 :(得分:0)

我在这里找到答案

            $('[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");
            });

请参考