javascript 将 body_0$ 添加到 ID 选择器
javascript adds body_0$ to ID selector
我正在使用表单验证,javascript 仅适用于输入字段而不适用于文本框。我使用:
var _firstname;
var box;
try {
box = $("#firstname");
alert("You must enter a first name");
box.focus();
return false;
}catch{
}
前端为:
<div>First Name <span class="required">*</span></div>
<asp:TextBox ID="firstname" name="firstname" runat="server" />
当我调试代码时,它会在 ID 的前面添加一个 body_0$(即:body_0$firstname),所以我猜这就是它总是弹出的原因"You must enter a first name" 警报。有解决办法吗?
如果您的实际问题不是获取 ID 的值,使用这个怎么样?
box = $("[id*=" + 'firstname' + "]").val();
它将查找所有包含字符串 'firstname'
的 ID
尽管在您的代码中它只是运行并显示警报。你对 box 的赋值是控件本身,而不是值。
不,JavaScript 不会那样做。是 ASP.NET WebForms runtime 做的。您提供的 ID
属性由服务器端使用,不会 "as-is" 输出到客户端。
在其默认模式下,WebForms mangles decorates id
具有 runat="server"
元素层次结构的属性编号。这对 WebForms 有好处,因为您可以在转发器、面板等中重复使用 ID,而无需在客户端创建重复的 ID。但是,它 os 对其他任何东西都不是很好,比如浏览器或苦苦挣扎的前端开发人员。
这个 2009 年的老问题可能有帮助:
How to stop ASP.NET from changing IDs in order to use jQuery
解决方案
从 ASP.NET 4.0 开始,它是 os 到 select 的 ClientIDMode
。将其设置为 Predictable
或 Static
,如下所示:
<%@Page Language="C#"
CodeBehind="MyFormName.aspx.cs"
Inherits="MyWebApplication.MyFormName"
ClientIDMode="Static"
%>
当您重复使用或重复服务器端控件时请注意不要这样做,因为这会创建具有相同客户端 ID 的多个元素! (在 dman2306 发表评论后更新)
我正在使用表单验证,javascript 仅适用于输入字段而不适用于文本框。我使用:
var _firstname;
var box;
try {
box = $("#firstname");
alert("You must enter a first name");
box.focus();
return false;
}catch{
}
前端为:
<div>First Name <span class="required">*</span></div>
<asp:TextBox ID="firstname" name="firstname" runat="server" />
当我调试代码时,它会在 ID 的前面添加一个 body_0$(即:body_0$firstname),所以我猜这就是它总是弹出的原因"You must enter a first name" 警报。有解决办法吗?
如果您的实际问题不是获取 ID 的值,使用这个怎么样?
box = $("[id*=" + 'firstname' + "]").val();
它将查找所有包含字符串 'firstname'
的 ID尽管在您的代码中它只是运行并显示警报。你对 box 的赋值是控件本身,而不是值。
不,JavaScript 不会那样做。是 ASP.NET WebForms runtime 做的。您提供的 ID
属性由服务器端使用,不会 "as-is" 输出到客户端。
在其默认模式下,WebForms mangles decorates id
具有 runat="server"
元素层次结构的属性编号。这对 WebForms 有好处,因为您可以在转发器、面板等中重复使用 ID,而无需在客户端创建重复的 ID。但是,它 os 对其他任何东西都不是很好,比如浏览器或苦苦挣扎的前端开发人员。
这个 2009 年的老问题可能有帮助:
How to stop ASP.NET from changing IDs in order to use jQuery
解决方案
从 ASP.NET 4.0 开始,它是 os 到 select 的 ClientIDMode
。将其设置为 Predictable
或 Static
,如下所示:
<%@Page Language="C#"
CodeBehind="MyFormName.aspx.cs"
Inherits="MyWebApplication.MyFormName"
ClientIDMode="Static"
%>
当您重复使用或重复服务器端控件时请注意不要这样做,因为这会创建具有相同客户端 ID 的多个元素! (在 dman2306 发表评论后更新)