我有一个隐藏字段的aspx页面
<asp:HiddenField ID="hdnObjectID" runat="server" />
我想在外部javascript文件中获取hiddenfield的值。 我已使用此代码获取hdnObjectID
的值var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value);
但它没有得到价值。
答案 0 :(得分:0)
在Javascript中尝试以下操作: var objectID = parseInt(document.getElementById('hdnObjectID')。value);
答案 1 :(得分:0)
如果服务器变量是用外部JS文件编写的,那么你将无法访问它。我已在此thread
中解释了这个原因在您的aspx页面中,声明一个全局javascript变量
var hdnTextBox = <%= hdnObjectID.ClientID %>;
在外部文件中使用此变量。
如果您使用的是asp.net 4.0,则可以控制该控件的客户端ID。有关如何控制它,请参阅here
另一个选择是使用帮助ScriptManager.RegisterStartupScript从服务器端编写JS。在page_load中写下以下代码
ScriptManager.RegisterStartupScript(this, GetType(), "SomeName","SomeFunc(" +hdnObjectID.ClientID + ");", true);
并在您的外部文件中
function SomeFunc(hdnObjectClientId){
//
}
并将客户端ID传递给函数
答案 2 :(得分:0)
您不能在外部js文件中使用<%= hdnObjectID.ClientID %>
,因为这些服务器端表达式不会在extrnal js文件中进行评估。
您可以在页面中创建一个功能,以便从该隐藏字段中获取值。
答案 3 :(得分:0)
您无法评估JavaScript文件中的服务器代码。
如果您使用static client IDs,则可以安全地对外部文件中的值进行硬编码。否则,将其作为参数传递给页面中的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)
答案 4 :(得分:0)
试试这个 在您的外部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>
答案 5 :(得分:0)
在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>
此方法将返回具有mayching名称的对象。但如果有两个名称相似的对象,则此方法需要修改
希望这会对你有所帮助:)
答案 6 :(得分:0)
试试这个:
Page.ClientScript.RegisterStartupScript(this.GetType(), "Assign", "assignValues('"+ hdnSchedule.Value +"');", true);