29

我有两页。从第一页开始,我打开一个带有查询字符串的模式,其中包含客户端名称的值。然后我使用它在打开的模式上设置一个隐藏字段。

我需要新模式上的 TextBox 来显示从第一个屏幕发送的值。

我尝试使用以下方法获取价值:

var hv = $('hidClientField').val();`

但这似乎不起作用。

这是我的隐藏字段:

<asp:HiddenField ID="hidClientName" runat="server" />`

我在 Page_Load 后面的代码中设置它,如下所示:

hidClientName.Value = Request.QueryString["Client_Name"] ?? "";`

任何想法将不胜感激。

4

8 回答 8

56

尝试以下任何一项

  1. 如果 ASP.Net 控件和 javascript 都在同一页面上,则使用

    var hv = $("#"+ '<%= hidClientField.ClientID %>').val();
    
  2. 如果你想从某个 JS 文件中访问控件,那么

    // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField'
    var hv = $('input[id$=hidClientField]').val();
    
  3. 您可以使用类名选择器来实现相同的目的。看看这个类似的问题。

在 asp.net 中,控件 id 被破坏。因此,您的代码无法正常工作。

希望这对你有用。

于 2012-01-18T10:11:45.340 回答
7

您忘记了#在选择器中按 ID 选择:

var hv = $('#hidClientField').val();

尽管 asp.net 根据命名容器生成 ID,但您最终可能会得到一个类似ctl1$hidClientField. 然后,您可以使用“属性以结尾”选择器:

var hv = $('input[id$=hidClientField]').val();

查看有关jQuery 选择器的文档

于 2012-01-18T10:10:48.903 回答
6

使用 ID 选择器。

var hv = $('#hidClientName').val();

或者

var hv = $('#<%=hidClientName.ClientID%>').val();
于 2012-01-18T10:11:11.743 回答
4

因为 jQuery 对asp:HiddenField. 它在您拥有的 HTML 结构中查找<input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" .... 所以没有输入ID= HiddenFieldServerDateTime。有几种方法可以克服这个问题:

  • 使用 CSS 选择器:

    <asp:HiddenField ID="HiddenFieldServerDateTime" 
                     runat="server" 
                     CssClass="SomeStyle" />
    

    使用以下选择器:var serverDateTime = $(".SomeStyle").val();

    CssClass不是类上的可用类HiddenField(并且它没有Attributes集合,因此您无法手动添加它)。

  • 使用ClientID属性:

    var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val();
    
  • 将隐藏字段包装在您可以选择的内容中:

    <div class="date-time-wrap">
      <asp:HiddenField ID="..." runat="server" />
    </div>
    

     

    var serverDateTime = $('.date-time-wrap input[type=hidden]').val();
    
于 2012-01-18T10:10:51.913 回答
0

如果您使用的是 Asp.net 控件,服务器将破坏控件 ID。它在 id 中添加了一堆无关的控制树层次结构信息。您需要引用正在呈现的实际 id,这可通过控件 (hfUser.ClientID) 上的 ClientID 属性获得,或者以不同的、更迂回的方式访问您的控件,例如找到控件父级,然后搜索其孩子找到你的控制。

如果您不必使用 asp.net HiddenField 控件,请尝试仅使用常规的旧 html 输入。

于 2012-01-18T10:12:10.167 回答
0

你可以这样做

var hval = $('#<%= hdMarkupPercentage.ClientID%>').val();
于 2012-01-18T10:58:25.730 回答
0

在您的代码中包含 ClientIDMode="Static"。

var obj = $('#hidClientName').val(); <asp:HiddenField ID="hidClientName" ClientIDMode="Static" runat="server" />

或者

var obj = $('#<%=hidClientName.ClientID%>').val(); <asp:HiddenField ID="hidClientName" runat="server" />

于 2018-06-19T10:45:40.963 回答
-1

请尝试此代码。

 var hv = $("#<%= hidClientField.ClientID %>").val();
于 2012-01-18T10:13:39.557 回答