未定义为$(“inputElement”)。val()

时间:2012-03-03 08:02:19

标签: javascript asp.net ajax

我在asp.net项目的主页中有这段代码

<div style="display:none">
       <input id="txtPageIDMaster" name="txtPageIDMaster" type="text" value="0" runat="server"/>
    <input id="txtOnLineUserMaster" type="text" value="0" runat="server"/>
    </div> 

并在脚本标记中:

alert($("#txtPageIDMaster").val())

但请告诉我这个警告:未定义

4 个答案:

答案 0 :(得分:2)

这应该有效:

alert($("<%= txtPageIDMaster.ClientID %>").val())

为什么呢?因为asp.net为控件设置了自己的id。因此ClientID属性为您提供生成的ID。

从ASP.NET 4开始,这基于ClientIDMode属性。这可以是四个值:

  • ClientIDMode.Inherit
  • ClientIDMode.AutoID(这是默认值以及它一直是.NET4之前的版本)
  • ClientIDMode.Preditable
  • ClientIDMode.Static(这是将html ID设置为asp.net ID属性时)

Asp.net MVC不会这样做。您可以完全控制您的HTML,并且您的ID永远不会自动生成。

答案 1 :(得分:0)

试试这个

alert(document.getElementById('txtPageIDMaster').value);

答案 2 :(得分:0)

从jQuery的角度来看:

  1. 是否在页面上安装了jQuery?
  2. alert(...)语句是否在适当的结构中,例如
  3. 的javascript:

    $(function(){
        alert($("#txtPageIDMaster").val());//adapted for ASP.net as per gideon's suggestion, I expect
    };)
    

答案 3 :(得分:0)

如前所述,runat = server控件将被视为服务器端控件,因此在javascript中找到它时需要指定controlname.clientID,因此需要在javascript中提及如下

alert(document.getElementById('<%= txtPageIDMaster.ClientID %>').value);