Asp.Net控件值在Jquery中返回undefined

时间:2016-02-18 05:49:16

标签: javascript jquery asp.net

在我的项目中,当基于文本框值单击标签时,我需要更改动态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。

2 个答案:

答案 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