2012-02-01 19 views
7

campos ocultos:.document.getElementById ('id') Valor de fracasar en ASP.net función javascript

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

función 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"; 
    } 
} 

código subyacente:

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

El La función javascript se equivoca con "Object Expected" en var brk = ... y no puedo entender dónde está yendo mal. ¡Quitándome el pelo! :(

+0

¿Alguna posibilidad de 'doGetWave' se llama antes de que los campos ocultos se hayan procesado? – Pat

Respuesta

16

Cuando coloca runat="server" en una etiqueta HTML estándar, ASP.Net destruye la ID para asegurarse de que sea única (al igual que lo hace con sus propios controles). Debe acceder al elemento utilizando la ID de esa ASP. . de red asignada Prueba esto:

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

Información adicional

Si está utilizando el marco 4.0, puede cambiar este comportamiento en el elemento, página o nivel de aplicación salida this link para una. pequeño tutorial decente. Si elige configurar el ClientIdMode a Static, puede acceder a sus elementos por los ID que asignó originalmente (no se modificarán).

+2

Esto hizo el truco. En "ver fuente" encontré la basura aleatoria insertada por ASP. Soy molesto. –

+1

O si está utilizando .net 4, establezca clientidmode en static. – ScottE

+1

respuesta perfecta !!. Gracias. – Hitsa00

Cuestiones relacionadas