¿Se puede acceder a los campos ocultos en la ventana secundaria desde la ventana principal?

StackOverflow https://stackoverflow.com/questions/199127

  •  11-07-2019
  •  | 
  •  

Pregunta

Tengo un formulario asp.net que contiene campos. Cuando accedo a esta ventana, mis funciones de JavaScript pueden acceder a los campos a través del DOM con el método getElementById () y cuando envío el paquete al servidor, recibo las actualizaciones realizadas por el cliente.

Sin embargo, cuando inicio el formulario como una ventana secundaria usando el control RadWindow de Telerik, el javascript no puede acceder a los campos ocultos en el formulario secundario. En cambio me pongo nulo.

Mis preguntas son:

  1. Son campos ocultos en una ventana secundaria no accesible cuando la ventana está lanzado desde un formulario asp.net padre?
  2. ¿Alguien ha intentado esto con los controles de Telerik y ha tenido problemas?

EDITAR Craig señaló que la identificación puede ser diferente. Dos preguntas adicionales entonces:

  1. ¿Puede asegurarse de que la identificación que asigna en el servidor se use realmente?
  2. ¿Está usando getElementByName () un mejor mecanismo para acceder a elementos DOM?
¿Fue útil?

Solución

Para obtener la identificación de su control asp.net, haga algo como esto:

<%= theControl.ClientID %>

getElementByName no se usa con tanta frecuencia como getElementById. Se supone que el atributo ID es único para cada elemento de la página, mientras que el atributo de nombre puede duplicarse.

Otros consejos

Es muy posible que la ID del elemento no sea lo que usted cree que es. Verifique la página renderizada y vea si la ID está allí. Supongo que la página recibe una ID diferente, ya que se representa dentro de otro control.

Si ese es el caso, puede hacer que el formulario represente un script que devuelva la ID del elemento accediendo a la ID del cliente de controles.

David, te estoy enviando esta respuesta porque vi el mismo problema en mi código, y la única solución REAL que encontré fue que tenía que admitir el " OnClick " funcionan en dos lugares ... En mi caso, estaba usando PetersDatePackage, pero estaba en un Telerik RAD Strip.

En mi caso, el control estaba en una página .ascx, y el código JS era el siguiente:

function OnIncidentDateChange(ctrl, dtDate, bErr)
{
    var weekday = new Array(7);
    weekday[0] = "Sunday";
    weekday[1] = "Monday";
    weekday[2] = "Tuesday";
    weekday[3] = "Wednesday";
    weekday[4] = "Thursday";
    weekday[5] = "Friday";
    weekday[6] = "Saturday";

    <%=LabelDayOfWeek.ClientID %>.innerText = weekday[dtDate.getDay()];
}

Pero, esto en sí mismo no fue suficiente. Tuve que agregar ESTE código a mi página principal. La página que contiene los controles para la tira de Telerik.

// Dummy function?
function OnIncidentDateChange()
{
}

Una vez que hice eso, funcionó ...

No estoy seguro de por qué, para decirte la verdad, y no tiene sentido para mí, y puede ser un problema con el paquete PDP ...

Uso getElementsByName para casillas de verificación dentro del mismo grupo.

En cuanto a la ID del control, TonyB tiene la idea correcta, pero asegúrese de consultar la propiedad ClientID en el controlador de eventos PreRender, porque si lo hace demasiado temprano en el ciclo de vida de la página, aún no estará disponible) .

¿Es posible que javascript esté intentando obtener una referencia al campo oculto antes de que RadWindow lo haya cargado? Creo que me he encontrado con esto antes y tuve que usar setTimeout para solucionar el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top