隐藏时如何从ASP.NET验证中排除控件(display:none;)?

时间:2014-05-30 11:02:00

标签: javascript jquery asp.net regex validation

如何在隐藏时从ASP.NET验证中排除控件?

  • 复选框用于在两个文本框之间切换。

  • NOT BOTH 需要其中一个

  • 我希望在隐藏时禁用必填字段。

我知道enabled="false"visible="false"会创建此行为,但我想保持jquery淡出动画。

我尝试将禁用的false属性添加到javascript但无法使其正常工作。 在线发现的其他解决方案似乎无法实现所需。

ASP.NET

<div class="Hide1">
  <asp:TextBox ID="tb" runat="Server"/>
  <asp:RequiredFieldValidator ID="rfv1" RunAt="Server" ControlToValidate="tb"/>
</div>

<div class="Hide2">
  <asp:TextBox ID="tb2" runat="Server"/>
  <asp:RequiredFieldValidator ID="rfv2" RunAt="Server" ControlToValidate="tb2"/>
</div>

<asp:Button ID="btn" runat="Server" Text="GO"/>

JQUERY

  $('.tb').hide();
  $('#CB').change(function () {
    if ($(this).is(':checked')) {
      $('.tb2').fadeOut(100, function () {
        $('.tb').fadeIn();
      });
    } else {
      $('.tb').fadeOut(100, function () {
        $('.tb2').fadeIn();
      });
    }
  });

3 个答案:

答案 0 :(得分:2)

禁用必填字段验证器

 document.getElementById('RequiredFieldValidator1').enabled=false;

启用必填字段验证器

 document.getElementById('RequiredFieldValidator1').enabled=true;

答案 1 :(得分:1)

只需将控件的属性“CauseValidation”设置为“False”即可。 例如

<asp:TextBox ID="TextBox1" runat="server" CausesValidation="false"></asp:TextBox>

这必须在服务器端代码中完成。

希望这有帮助。

修改1

如果必须在javascrpt中完成..我认为应该在验证中检查控件的可见性

function validate()
{
 if control is hidden
 { avoid validation
 }
 else
 {validate
 }
}

答案 2 :(得分:1)

您可以尝试这样的事情

if (document.getElementById('<%=CB.ClientID%>').checked) {
   ValidatorEnable(document.getElementById('<%= rfv1.ClientID %>'), true);
   ValidatorEnable(document.getElementById('<%= rfv2.ClientID %>'), false);
   $('.tb2').fadeOut(100, function () {
        $('.tb').fadeIn();
      });
 }
 else {
       ValidatorEnable(document.getElementById('<%= rfv1.ClientID %>'), false);
       ValidatorEnable(document.getElementById('<%= rfv2.ClientID %>'), true);
       $('.tb').fadeOut(100, function () {
          $('.tb2').fadeIn();
          });
      }

注意: rfv1和rfv2是两个必需验证器的ID,请避免向验证者提供相同的ID。

更新

if (document.getElementById('<%=CB.ClientID%>').checked) {
       ValidatorEnable(document.getElementById("#<%= rfv1.ClientID %>"), true);
       ValidatorEnable(document.getElementById("#<%= rfv2.ClientID %>"), false);
       $('.tb2').fadeOut(100, function () {
            $('.tb').fadeIn();
          });
     }
     else {
           ValidatorEnable(document.getElementById("#<%= rfv1.ClientID %>"), false);
           ValidatorEnable(document.getElementById("#<%= rfv2.ClientID %>"), true);
           $('.tb').fadeOut(100, function () {
              $('.tb2').fadeIn();
              });
          }