2010-09-14 15 views

Respuesta

25

No, no hay tal evento.

Sin embargo, una etiqueta <script> colocado directamente después de que el elemento HTML tendría un efecto similar: sería ejecutado directamente después de que el elemento se ha rendido:

<input type="text" id="input123" value="Hello World!"> 

<script> 
alert("Input123 is now ready:"+document.getElementById("input123).value); 
</script> 

En la mayoría de los casos, sin embargo, lo mejor es utilice el documento load (o DOMReady, o jQuery's .ready()) para iniciar cualquier operación de script. El DOM estará completamente listo entonces.

0

No, esto no es posible. Sin embargo, puede usar jQuery + $ (document) .ready (function) para modificar cualquier campo de entrada que desee justo después de que la página haya terminado de cargarse.

5

No. Sin embargo, cualquier script colocado después del marcado del elemento de entrada se ejecutará con el elemento de entrada disponible porque se analiza antes del script. Por lo tanto, si todo esto era en el cuerpo:

<input id="a"> 
<script>document.getElementById('a');</script> 

Eso haría todo el trabajo de todos modos.

+0

el problema es el id no se conoce a mí cuando se representa el elemento. – imdhmd

+0

¿Cómo sabría en qué entrada ejecutar el código? – Gareth

+1

Gareth, observe cómo seleccioné el elemento con id 'a' en el script de ejemplo. imdad, puede usar otros medios para seleccionar el elemento, como la selección de etiquetas o incluso la selección de clases. –

0

No, no lo hay. Simplemente ejecute su código desde el manejador de documentos "listo", o use algo como jQuery para darle una forma de ejecutar el código en "listo" (que es cuando el DOM está completo pero las imágenes pueden no haberse cargado).

20

Una forma de simular un evento de este tipo es crear un atributo de datos personalizado * (HTML-5 válido) y usarlo como un selector. Luego, en el código principal de JavaScript, puede agregar un selector para cualquier cosa que tenga este atributo específico de datos-XXX y evaluar el código de javascript dentro.

código Ejemplo HTML:

<div data-onload="sampleFunction('param1', 2)"></div> 

código Ejemplo Javascript (usando jQuery). También es posible usar DOM normal para encontrar elementos con este atributo.

/* Find any element which has a 'data-onload' function and load that to simulate an onload. */ 
$('[data-onload]').each(function(){ 
    eval($(this).data('onload')); 
}); 

Esto funciona bien. De hecho, lo uso en producción.

+3

En general, se considera una mala práctica usar eval y se debe evitar siempre que sea posible. Eval puede ser bastante inseguro, ya que ejecutará cualquier código que esté dentro del atributo data-onload. Puede usar una devolución de llamada genérica y simplemente pasar los argumentos a través de 'data-onload' como http: // codepen.io/kevingimbel/pen/0c9366e17a96288ee8a685d6d53a805f –

+0

esto es genial, gracias –

1

Tengo un elemento de entrada que se agrega dinámicamente al documento y necesita inicializarse.

No es perfecto, pero aquí es una manera de inicializar el widget de la primera vez que se utiliza la entrada:

<input onfocus="initwidget(this)"> 
Cuestiones relacionadas