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?