我有一个包含隐藏字段的 aspx 页面
<asp:HiddenField ID="hdnObjectID" runat="server" />
我想在外部 javascript 文件中获取隐藏字段的值。我已使用此代码获取 hdnObjectID 的值
var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value);
但它没有得到价值。
我有一个包含隐藏字段的 aspx 页面
<asp:HiddenField ID="hdnObjectID" runat="server" />
我想在外部 javascript 文件中获取隐藏字段的值。我已使用此代码获取 hdnObjectID 的值
var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value);
但它没有得到价值。
您无法评估 JavaScript 文件中的服务器代码。
如果您使用静态客户端 ID,您可以安全地硬编码外部文件中的值。否则,将其作为参数从页面传递给您的 JavaScript 方法。
// in file
function foo(clientId){
var element = document.getElementById(clientId);
}
<%-- in page markup -->
<script>
foo("<%=hdnObjectId.ClientID %>");
</script>
// or, register in codebehind in OnPreRender (or where suitable)
尝试这个:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Assign", "assignValues('"+ hdnSchedule.Value +"');", true);
在您的 Javascript 中尝试以下操作: var objectID = parseInt(document.getElementById('hdnObjectID').value);
如果服务器变量写在外部 JS 文件中,您将无法访问它。我已经在这个线程中解释了这个原因
在您的 aspx 页面中,声明一个全局 javascript 变量
var hdnTextBox = <%= hdnObjectID.ClientID %>;
在您的外部文件中使用此变量。
如果您使用的是 asp.net 4.0,则可以控制该控件的客户端 ID。有关如何控制它,请参见此处
另一种选择是在 ScriptManager.RegisterStartupScript 的帮助下从服务器端编写 JS。在您的 page_load 中编写以下代码
ScriptManager.RegisterStartupScript(this, GetType(), "SomeName","SomeFunc(" +hdnObjectID.ClientID + ");", true);
并在您的外部文件中
function SomeFunc(hdnObjectClientId){
//
}
并将客户端 ID 传递给函数
您不能<%= hdnObjectID.ClientID %>
在外部 js 文件中使用,因为这些服务器端表达式不会在外部 js 文件中进行评估。
不过,您可以在页面中创建一个函数以从该隐藏字段中获取值。
试试这个在你的外部 javascript
var Controls = null;
function readHidden(){alert(Controls.hdn_val.value);}
在 .aspx 文件中
<script type="text/javascript" src="myexternal.js"></script>
<script type="text/javascript">
Controls = {hdnfld = '<%=hdn_val.ClientID %>'};
</script>
在 findElement javascript 方法中传递“hdnObjectID”以获取对象
<script type="text/javascript">
function findElement(e) {
var foundElement = null;
var elements = window.document.forms[0].elements;
for (i = 0 ; i < elements.length; i++) {
if (elements[i].id.indexOf(e) > -1) {
foundElement = elements[i];
break;
}
}
return foundElement;
}
</script>
此方法将返回具有可能名称的对象。但是,如果有两个名称相似的对象,则此方法将需要修改
希望对你有帮助 :)