2012-02-01 15 views
7

隱藏字段:的document.getElementById( '編號')值在ASP.net失敗javascript函數

<input type="hidden" id="hidOrg1" runat="server" value="" /> 
<input type="hidden" id="hidBT" runat="server" value="" /> 

javascript函數:

function doGetWave(obj) { 
    //debugger 
    var brk = document.getElementById('hidBT').value; 
    //var brkId = document.getElementById('hidBI').value; 
    var org = document.getElementById('hidOrg1').value; 
    session = obj.options[obj.selectedIndex].value; 
    sWaveText = obj.options[obj.selectedIndex].text;  
    if (brk == "") { 
     window.location.href = "url.aspx?multiple=" + org + "&wave=" + sWaveText + "&strORGId=multiple"; 
    } 
    else { 
     window.location.href = "url.aspx?multiple=" + org + "&wave=" + sWaveText + "&BRKType=" + brk + "&strORGId=multiple"; 
    } 
} 

代碼隱藏:

protected void Page_Load(object sender, EventArgs e) 
{ 
    hidOrg1.Value = strOrgId; 
    hidBT.Value = ""; 
} 

的在var brk =的「Object Expected」中出現javascript函數錯誤,並且我無法弄清楚它出錯的地方。把我的頭髮拉出來! :(

+0

任何機會'doGetWave'在隱藏字段渲染之前調用? – Pat 2012-02-01 19:28:07

回答

16

當您將runat="server"放置在一個標準的HTML標記中時,ASP.Net會損壞該ID以確保它是唯一的(就像它使用自己的控件一樣)您需要使用ASP的ID訪問該元素。如果您使用的是4.0框架

var brk = document.getElementById('<%= hidBT.ClientID %>').value; 
var org = document.getElementById('<%= hidOrg1.ClientID %>').value; 

其他信息

,你可以在元素,頁面或應用程序級別更改此行爲,請this link爲:淨分配試試這個。體面的小教程。如果你選擇設置ClientIdModeStatic,您可以通過您最初分配的ID訪問您的元素(它們不會被更改)。

+2

這個伎倆。在「查看源代碼」中我找到了ASP插入的隨機垃圾。大豆煩人。 – 2012-02-01 19:37:18

+1

或者如果您使用.net 4,請將clientidmode設置爲靜態。 – ScottE 2012-02-01 19:39:18

+1

完美答案!!謝謝。 – Hitsa00 2017-06-10 12:22:41