• Domingo 22 de Diciembre de 2024, 06:22

Autor Tema:  Referenciar Id's En Javascript  (Leído 3058 veces)

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Referenciar Id's En Javascript
« en: Lunes 1 de Octubre de 2007, 13:28 »
0
Hola,

Os pongo en situacion:
Tengo tres textbox y un radio button list. Un textbox es el precio total, otro es el descuento y otro el precio final. En el readio button list se muestran las opciones del tipo de descuento, que puede ser porcentual o cuantitativo.

Quiero crear una funcion de javascript que cuando cambie el descuento y ese textbox pierda el foco me calcule automaticamente el precio final. Esta funcion obviamente necesita saber que tipo de descuento se aplica para aplicar una formula u otra. La funcion la he creado y funciona perfectamente en una pagina de prueba, pero no me funciona  en mi pagina.

El problema creo que esta al utilizar una master page (no utilizada en la pagina de prueba). Ya que, cuando intento recuperar el elemento del documento mediante "document.getElementById, no se que "id" utilizar. Es decir, he probado con:

1. La id que utilizaba en mi pagina de prueba que era: "Rdol_0". Esta id la copie del codigo HTML que se genera para mostrar la pagina. La id supuse que se correspondia con el nombre de la radio button list (Rdol) y el indice de la opcion seleccionada (_0).

2. La id que se genera en esta nueva pagina: 'ctl00_ContentPlaceHolder_RdoLConcession_0'. Donde vemos que se añade el codigo del content place holder.

Ninguna de las dos alternativas funciona. Por tanto pregunto a ver si alguien me puede decir como puedo obtener el indice seleccionado de la radio button list en javascript, teniendo en cuenta que se usa un content place holder.

Y para un futuro, como poder renombrar al crearse la pagina html los elementos utilizados en asp.net para poder referenciarlos luego mediante javscript, en lugar de tener que copiar y pegar nombres tan largos como el de la degunda prueba.

PD: Os dejo la funcion por si ayuda en algo:

   function CalculateFare(d,t,f)
        {
            if (document.getElementById('ctl00_ContentPlaceHolder_RdoLConcession_0').checked == true)
            {
                f.value = (1 - (d.value / 100)) * t.value;
            }
            else
            {
                f.value = t.value - d.value;                    
            }            
        }

Saludos y muchas gracias

Kev

  • Miembro HIPER activo
  • ****
  • Mensajes: 654
    • Ver Perfil
Re: Referenciar Id's En Javascript
« Respuesta #1 en: Lunes 1 de Octubre de 2007, 19:42 »
0
Hola, de entrada no coloques el code javascript en el master page, colocalo en la pagina donde la utilizas, donde en las variables que hagan referencias a tus controles escribes sentencias

var x = document.getElementById('<%= Me.txtMontoTotal.ClientId)%>')

Mas o menos asi obtendras el id del control real

Suerte!

 :comp:  :hola:
La teoria es asesinada tarde o temprano por la experiencia
Albert Einstein
Kev - 3 DCE
-----------------------------------------------------
Articulos:
Convertir texto a imagen en ASP.NET
Trabajando con el Global.asax

Javier Santamaria

  • Miembro MUY activo
  • ***
  • Mensajes: 142
    • Ver Perfil
Re: Referenciar Id's En Javascript
« Respuesta #2 en: Martes 2 de Octubre de 2007, 12:39 »
0
Hola de nuevo, gracias por responder, trasteando he llegado a esta funcion que me ha servido para solucionar el tema:

<script type="text/javascript" language="javascript" >

function CalculateFare(d)
{
var t = document.getElementById('<%=TxtPrice.ClientId%>');
var f = document.getElementById('<%=TxtFinalPrice.ClientId %>');
if (GetSelectedOption('<%=RdoLConcession.ClientId%>') == "%")
{
f.value = (1 - (d.value / 100)) * t.value;
}
else
{
f.value = t.value - d.value;
}
}

function GetSelectedOption(ctrlOptionsId)
{
var position = 0;
var item = document.getElementById(ctrlOptionsId+"_"+position );
while(item != null)
{
if(item.checked)
{
return item.value
}
else
{
position += 1;
item = document.getElementById(ctrlOptionsId+"_"+(positio n));
}
}
}

</script>

Saludos