在我的项目中,当基于文本框值单击标签时,我需要更改动态asp控件的可见性。所以我首先尝试在单击标签时获取文本框值,但返回undefined
。我正在搜索并获得我试过的两种方法,它也返回相同。
我的尝试:
<script language="javascript" type="text/javascript">
$(document).ready(function() {
$(document).on("click", "#lblShow", function() {
alert($('#<%=txtTotalVersion.ClientID%>').val());
alert($('input[id$=txtTotalVersion]').val());
var xTotlal =$('#<%=txtTotalVersion.ClientID%>').val()
var i = 0;
for (i = 0; i < xTotlal; i++) {
$('#createDiv' + i).style.display = "blcok";
$('#createDiv1' + i).style.display = "block";
$('#createDiv2' + i).style.display = "block";
$('#createDiv3' + i).style.display = "block";
}
});
});
</script>
HTML
<div id="DivCompName">
<asp:TextBox runat=server ID="txtTotalVersion" Visible="false"></asp:TextBox>
<asp:TextBox runat=server ID="txtCurrentDisplay" Visible="false"></asp:TextBox>
</div>
前两个警报返回undefined。
答案 0 :(得分:1)
Visible="false"
是asp.net属性,在这种情况下,您的控件将不会在客户端呈现。因此,您的客户端脚本将找不到控件,因为它不存在!
如果您想在客户端存储一些值并且不想显示它,那么您可以使用HiddenFields
,或者可以使用css样式display:none;
隐藏相同的控件。 (不要使用Visible="false"
)
答案 1 :(得分:0)
您可以添加ClientIDMode = Static并从您的jquery
中调用它<asp:TextBox runat=server ID="txtTotalVersion" Visible="false" ClientIDMode="Static"></asp:TextBox>
<script>
$(document).ready(function () {
alert("#txtTotalVersion").val();
})
</script>
原因是,您的控件的客户端ID可能不像ID =“xxx”一样,如果控件位于另一个asp.net服务器控件内,在添加ClientIDMode之后,您告诉您的服务器使用静态ID处理此控件
了解详情:msdn