2012-02-01 12 views
7

ukrytych pól.document.getElementById ('id') wartości nie wypełnia ASP.net JavaScript funkcja

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

JavaScript funkcji:

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"; 
    } 
} 

codebehind:

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

błędy funkcji javascript out z "Object Expected" w var brk = ... i nie mogę ustalić, gdzie jest źle. Wyciągam włosy z głowy! :(

+0

Czy przypadkiem 'doGetWave' jest wywoływane przed wyrenderowaniem ukrytych pól? – Pat

Odpowiedz

16

Po umieszczeniu runat="server" w standardowym znaczniku HTML, ASP.Net mangles identyfikator, aby upewnić się, że jest unikalny (tak jak robi to z własnymi kontrolkami). Musisz uzyskać dostęp do elementu przy użyciu identyfikatora ASP. . netto przypisany Spróbuj tego:

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

Dodatkowe informacje

Jeśli używasz Framework 4.0, można zmienić to zachowanie na elemencie, stronie lub poziomu aplikacji Sprawdź this link dla. przyzwoity mały samouczek, jeśli zdecydujesz się ustawić ClientIdMode do Static, możesz uzyskać dostęp do swoich elementów poprzez identyfikatory, które pierwotnie przypisałeś (nie zostaną zmienione).

+2

To załatwiło sprawę. W "źródle widoku" znalazłem losowe bzdury wstawione przez ASP. Soja denerwująca. –

+1

Jeśli używasz .net 4, ustaw tryb klienta na statyczny. – ScottE

+1

idealna odpowiedź !!. Dzięki. – Hitsa00