events - YUI 3 programáticamente dispara un evento de cambio
onchange yui3 (3)
La solución habitual no es activar el evento mediante programación, sino mover toda la lógica del evento a una función, y llamar a esa función desde su código cuando sea apropiado.
Y.get(''#mynode'').on(''change'', function(e) {
AlertUserOfChange();
});
function AlertUserOfChange()
{
Alert(“changed me”);
}
Me preguntaba cómo activar un evento de cambio programáticamente con YUI3. Agregué un detector de cambios a un nodo de un cuadro de selección:
Y.get(''#mynode'').on(''change'', function(e) {
Alert(“changed me”);
});
y en otro lugar en el guión quieres disparar ese evento. Funciona, por supuesto, cuando un usuario cambia el valor del cuadro de selección en el navegador. Pero he intentado muchas formas de dispararlo programáticamente, ninguna de las cuales ha funcionado. Incluso:
// All below give this error: T[X] is not a function (referring to what''s called in .invoke(), // in the minified javascript
Y.get(''#mynode'').invoke(''onchange'');
Y.get(''#mynode'').invoke(''change'');
Y.get(''#mynode'').invoke(''on'',''change'');
Y.get(''#mynode'').invoke("on(''change'')");
/* Tried using .fire() which I found here:
* http://developer.yahoo.com/yui/3/api/EventTarget.html#method_fire
* Nothing happens
*/
Y.get(''#mynode'').fire(''change'');
/* Looking around the APIs some more, I found node-event-simulate.js:
* http://developer.yahoo.com/yui/3/api/node-event-simulate.js.html,
* which by its name would seem to have what I want. I tried:
* Error: simulate(): Event ''change'' can''t be simulated.
* ( (function(){var I={},B=new Date().getTim...if(B.isObject(G)){if(B.isArray(G)){E=1;/n)
*/
Y.get(''#mynode'').simulate(''change'');
¡Cualquier ayuda sería apreciada!
Qué tal esto
Y.Event.simulate(''#mynode'', ''change'');
YUI 3.0 no admite la simulación de los eventos de change
, como ha descubierto. Sin embargo, será soportado en YUI 3.1. Está en el maletero ahora.
Tu tercer intento:
Y.get(''#mynode'').simulate(''change'');
Debería trabajar en 3.1.
editar
Parece que simplemente puede reemplazar la versión YUI 3.0 de event-simulate.js
con la versión troncal, y funcionará en una aplicación de lo contrario 3.0. No he visto ningún problema hasta ahora.