当其他事件发生时,用javascript隐藏的文本框将变为可见
Textbox hidden with javascript becomes visible when other events occur
当(从ddlSource)更改下拉值时,我有javascript可以隐藏几个文本框,这很好。接下来,当用户在另一个文本框中输入某个值时,我有一个ajax调用来填充一些标签。在表单加载时进行此ajax调用之后,隐藏的文本框现在可见。我哪里错了?
<asp:DropDownList ID="ddlSource" runat="server"
TabIndex="80" EnableViewState="True" CssClass="Input"
Width="162px" onchange="DisableEnable();">
<asp:ListItem Text="" Value="" />
<asp:ListItem Text="x" Value="x" />
<asp:ListItem Text="y" Value="y" />
</asp:DropDownList>
我的enabledisable的javascript是
function DisableEnable() {
var DropDown_Source = document.getElementById("<%= ddlSource.ClientID %>")
if (DropDown_Source.options[DropDown_Source.selectedIndex].text == "y") {
document.getElementById('txtSupplementNbr').style.visibility = 'visible';
document.getElementById("txtDelDate").style.visibility = 'visible';
document.getElementById('lblSupplementNbr').style.display = '';
document.getElementById('lblDelDate').style.display = '';
}
else {
document.getElementById("txtSupplementNbr").style.visibility = 'hidden';
document.getElementById("txtDelDate").style.visibility = 'hidden';
document.getElementById('lblSupplementNbr').style.display = 'none';
document.getElementById('lblDelDate').style.display = 'none';
}
}
使ajax调用的文本框
<asp:UpdatePanel id="UpdatePaneltxtTrialCaseNbr" runat="server">
<ContentTemplate>
<asp:TextBox ID="txtTrialCaseNbr" runat="server" Text="" tabindex="100"
Width="200px" maxlength="120" cssclass="input"
OnTextChanged="GetCaseSummaryCivilPlaintiffInfo"
onblur="SearchTrialCaseNbr();GetCasePlaintiffInfo();"
AutoPostBack="false" />
</ContentTemplate>
</asp:UpdatePanel>
在它执行OnTextChanged()
函数之后,我看到了以前隐藏的所有控件。如有任何帮助,我们将不胜感激。
由于ajax请求,html被重新呈现为其初始状态。使用Sys在ajax请求ends
时调用DisableEnable()
。WebForms。PageRequestManager endRequest更新表单元素状态的事件。
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
DisableEnable();
}
您还可以将所有更改的控件放在更新面板中,以便在ajax调用之间由asp.net维护它们的状态。
您不需要在切换函数中处理可见性和显示。主要的区别是可见性隐藏了元素,但保持了它的位置,去掉了它。显示值应该对你很好。这里还有一个更简单的显示切换脚本,向它传递一个对象,它会检查它是否已经显示。
function toggle(obj) {
var el = document.getElementById(obj);
if ( el.style.display != 'none' ) {
el.style.display = 'none';
}
else {
el.style.display = '';
}
}
现在,您只需要确保只有在需要时才调用它,并且onchange将继续切换显示。我相信@Adil的回复会解决你的这部分问题。
相关文章:
- 在mvc应用程序中,在回发时保留最初隐藏的文本框的隐藏或可见状态
- 如何使用javascript隐藏文本
- 在显示/隐藏中单击时删除的文本
- 通过ng-if设置隐藏文本框的值
- Codemirror:将特定的基于模式的文本隐藏到编辑器中
- 使文本在它之后再次可见'It’s被一个按钮隐藏了
- 移动HTML输入文本框在提交时隐藏软键盘
- 只隐藏那些为空或没有文本的跨度
- Selenium认为文本框是隐藏的,即使我可以在浏览器中看到它
- 如何根据文本长度立即显示和隐藏字段?-JQuery
- Jquery日期选择器-我们如何将文本隐藏在日期选择器文本框中
- 使用 JS 将文本隐藏在元素中(而不是元素本身)
- 如何使一个文本隐藏另一个文本
- JQuery显示隐藏与无序列表:需要添加动态文本/隐藏功能
- 基于文本隐藏面板
- Span文本隐藏的动画DIV尽管z索引
- 为什么幻灯片面板打开时标题文本隐藏
- Javascript:切换纯文本隐藏它像密码文本点击按钮
- 当到达底部页面部分时,Jquery用锚文本隐藏Div
- Javascript,使多个文本隐藏文本输入可见