Javascript / jQuery - 隐藏字段时禁用验证

Posted

技术标签:

【中文标题】Javascript / jQuery - 隐藏字段时禁用验证【英文标题】:Javascript / jQuery - issue disabling validation when field is hidden 【发布时间】:2017-08-01 05:37:30 【问题描述】:

当下拉列表中的两个不同值之一被选中时,以下 javascript / jQuery 会显示一个字段,否则会隐藏该字段:

    function HideShowChargeCode() 
        var action = $('#<%=ddl_request_action.ClientID %>').val();
        if (action == "3" ||  action == "4") 
            $('#<%=pnl_charge_code.ClientID %>').show();
            document.getElementById("<%=rfv_charge_code.ClientID %>").enabled = true;
         else 
            $('#<%=pnl_charge_code.ClientID %>').hide();
            document.getElementById("<%=rfv_charge_code.ClientID %>").enabled = false;
        
    

每个条件的第二部分应该控制验证,但它似乎没有按预期工作。我仍然遇到该字段何时隐藏的问题,它仍在尝试验证。非常感谢在隐藏字段时关闭验证的任何解决方案!

【问题讨论】:

【参考方案1】:

您正在混合使用 jQuery 和 vanilla JavaScript。尝试将代码更改为以下内容:

function HideShowChargeCode() 
    var action = $('#<%=ddl_request_action.ClientID %>').val();
    if (action == "3" ||  action == "4") 
        $('#<%=pnl_charge_code.ClientID %>').show().prop("disabled", false);
     else 
        $('#<%=pnl_charge_code.ClientID %>').hide().prop("disabled", true);
    

【讨论】:

绝对是一个很好的提示。我已经重构了我的代码以匹配您的代码,但仍然面临同样的问题。 验证是发生在客户端还是服务器上? 服务器端验证 嗯,你不能通过元素的属性来控制服务器端的验证。如果存在与此元素关联的客户端控件,则需要切换该客户端控件的启用属性。 在上面发布了我的解决方案【参考方案2】:

Welp,我将其转换为 C# 函数,果然,一切都按预期工作:

 protected void ddl_request_action_SelectedIndexChanged(object sender, EventArgs e)
    

        var selected = ddl_request_action.SelectedIndex;

            if (selected == 3 || selected == 4)
            
                pnl_charge_code.Visible = true;
                rfv_charge_code.Enabled = true;
            
            else
            
                pnl_charge_code.Visible = false;
                rfv_charge_code.Enabled = false;
            


    

【讨论】:

以上是关于Javascript / jQuery - 隐藏字段时禁用验证的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript之jQuery-5 jQuery 动画效果(隐藏和显示自定义动画并发与排列效果)

如何使用 jquery 或 javascript 隐藏 div?

javascript 使用jQuery显示/隐藏子菜单项

javascript 显示/隐藏选择标记选项 - jQuery

javascript JQUERY展示或隐藏

JavaScript或者jQuery怎样获取一个隐藏元素的宽高