Javascript 在jQuery中从asp.net runat服务器获取ID
我正在尝试使用ASP.NET在jQuery中制作一些东西。但是Javascript 在jQuery中从asp.net runat服务器获取ID,javascript,jquery,asp.net,runatserver,Javascript,Jquery,Asp.net,Runatserver,我正在尝试使用ASP.NET在jQuery中制作一些东西。但是runat=“server”中的ID与HTML中使用的ID不同 我曾经用它从这种情况下获取ID: $("#<%=txtTest.ClientID%>").val(); $(“#”)val(); 但在这种情况下,它不起作用。我不知道为什么 Javascript /* Modal */ function contatoModal() { //alert("Test"); alert($("#<%=tx
runat=“server”
中的ID与HTML中使用的ID不同
我曾经用它从这种情况下获取ID:
$("#<%=txtTest.ClientID%>").val();
$(“#”)val();
但在这种情况下,它不起作用。我不知道为什么
Javascript
/* Modal */
function contatoModal() {
//alert("Test");
alert($("#<%=txtTest.ClientID%>").val());
}
/*模态*/
函数contatomodel(){
//警报(“测试”);
警报($(“#”)val();
}
HTML
任何提示?
都应该有效,但不能在服务器端脚本不执行的单独javascript文件中使用。另一种可能是使用类选择器:
<input runat="server" id="txtTest" value="test" class="txtTest" />
要避免呈现ID的问题,请改用类。这在渲染期间不会更改:
function contatoModal() {
//alert("Test");
alert($(".txtTest").val());
}
HTML:
尝试将其放入变量名中:
var txtTestID = '#' + '<%=txtTest.ClientID %>';
$(txtTestID).val();
var txtestid='#'+'';
$(txtestid.val();
我不确定在使用ASP.NET 4时,如果
和ClientIDMode设置为“可预测”,您可以根据层次结构预测ID。或者将其设置为“静态”,这样asp.net就不会把它搞砸
ScottGu关于它的文章
这在使用外部JS文件场景时非常有用。正如他在回答中所说:
应该可以工作,但是不能在单独的javascript中工作
服务器端脚本不执行的文件
我能找到的解决方案是:
<input runat="server" id="txtTest" value="test" class="txtTest" />
- 在
aspx
您始终可以在aspx中调用ClientID
,但是如果您使用某种结构,这不是最佳解决方案。我喜欢在测试某些东西时使用这种方法
var value = $('#<%=txtTest.ClientID%>').val();
在js文件中:
var value = $('#'+id).val();
- 使用
Static
因此HTML变成了
<input runat="server" id="txtTest" value="test" ClientIDMode="Static" />
此解决方案的问题是,您需要非常小心,以避免页面的id
上出现重复。尽量不要在控制器中使用静态
模式
如MSDN所述:
ClientID值设置为ID属性的值。如果
控件是一个命名容器,该控件用作
它包含的任何控件的命名容器的层次结构
的链接是检查有关ClientIDMode的额外信息的绝佳位置
正如其他人所提到的,您可以将类选择器传递给jQuery,但这有点混乱。我更喜欢用英语。假设生成的ID是一个扁平的控件层次结构,则可以使用“ends with”选择器查找元素
<input runat="server" id="txtText" />
在中继器中使用此选项时要小心。在WebForm/HTML页面中
<asp:TextBox ID="txtUserName" runat="server" Class="form-control"></asp:TextBox>
100%确定它对我有用….它为文本框和的ID实际输出了什么?我还想补充一下,它看起来更整洁了。这也不起作用。与我的示例相同,但无论如何还是要感谢提示=D PS:这次我使用了单引号=哇!这很有效。。。我把我的函数放在我的ascx页面中,现在它可以工作了。我知道类的一部分(但也谢谢你的提示),它在一个单独的javascript中工作(作为类)。无法在我的function.js页面中运行服务器id?script_path:script/function.js ascx_path:components/contact.ascx regards无法将asp.net id代码放入js文件中,asp.net不会查看其中以放入其值。此方法用于。。。Asp.net控件。。。如果您想选择id包含给定字符串的元素,这个答案将起作用。。
var id = <%=txtTest.ClientID%>;
var value = $('#'+id).val();
<input runat="server" id="txtTest" value="test" ClientIDMode="Static" />
var value = $('#txtTest').val();
<input runat="server" id="txtText" />
<input id="ctl00_contentplaceholder_txtText" />
$("input[id$='txtText']")
<asp:TextBox ID="txtUserName" runat="server" Class="form-control"></asp:TextBox>
var UserName = $("[id*=txtUserName]").val();
alert(UserName);