2012-02-01 19 views
7

隠しフィールド:のdocument.getElementById( 'ID')値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 = ""; 
} 

javascript関数のエラーは、 "オブジェクトが期待されています"とvar brk = ...で、どこが間違っているのか分かりません。私の髪を引き出す! :

+0

隠しフィールドがレンダリングされる前に 'doGetWave'が呼び出されていますか? – Pat

答えて

16

runat="server"を標準のHTMLタグに配置すると、ASP.NetはIDをマングリングして固有のものであることを保証します(独自のコントロールと同じように)。ASPのIDを使用して要素にアクセスする必要があります。 。ネット割り当てられ、これを試してみてください:

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

追加情報

をあなたは4.0フレームワークを使用している場合は、要素、ページ、またはアプリケーション・レベルでこの動作を変更することができますためthis linkをチェックしてください。ちょっとしたチュートリアルです。ClientIdModeStaticの場合、最初に割り当てたIDで要素にアクセスできます(変更されません)。

+2

これはトリックでした。 「ソースを見る」では、ASPによって挿入されたランダムなクラップスが見つかりました。大した迷惑です。 –

+1

または.net 4を使用している場合は、clientidmodeをstaticに設定します。 – ScottE

+1

完璧な答え!!ありがとう。 – Hitsa00

関連する問題