2012-07-31 174 views
1

隱藏字段我有一個aspx頁面contining一個hiddenfield訪問外部JavaScript

<asp:HiddenField ID="hdnObjectID" runat="server" />

我想在外部JavaScript文件hiddenfield的價值。 我已經使用這個代碼來獲得hdnObjectID

的價值
var objectID = parseInt($('#' + '<%= hdnObjectID.ClientID %>')[0].value); 

但它沒有得到的價值。

回答

0

請在Javascript中嘗試以下操作: var objectID = parseInt(document.getElementById('hdnObjectID')。value);

+0

thanks.Its工作按我的需要。 – akeeseth 2012-07-31 10:55:09

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傳遞給函數

0

你不能在一個外部JS文件使用<%= hdnObjectID.ClientID %>因爲這些服務器端表達式不會在外部js文件中評估。

雖然您可以在頁面中創建一個函數來從該隱藏字段獲取值。

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) 
0

試試這個 在您的外部JavaScript

var Controls = null; 
function readHidden(){alert(Controls.hdn_val.value);}  

在。在findElement aspx文件

<script type="text/javascript" src="myexternal.js"></script> 
<script type="text/javascript"> 
Controls = {hdnfld = '<%=hdn_val.ClientID %>'}; 
</script> 
0

通 「hdnObjectID」 JavaScript方法來獲取對象

<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名返回的對象。但是,如果有具有相似名稱的兩個物體比這個方法需要modifictaions

希望這將幫助你:)

0

試試這個:

Page.ClientScript.RegisterStartupScript(this.GetType(), "Assign", "assignValues('"+ hdnSchedule.Value +"');", true);