Tengo widgets que tienen controles javascript adjuntos.
Si el widget está presente cuando se carga la página de administración del widget, los controles funcionan correctamente.
Cuando agrego un nuevo widget, no funcionan correctamente, obtengo el marcado, pero ningún evento de javascript tiene efecto.
Si guardo el nuevo widget, cuando el formulario se vuelve a cargar, los controles se crean correctamente y ahora funcionan.
Actualizar la página también soluciona el problema, pero solo para los widgets existentes. Los nuevos widgets tienen este problema todavía.
Específicamente estoy ejecutando selectize en entradas seleccionadas en estos puntos:
- documento listo
- Ajaxcomplete
He verificado que mi código se ejecuta en cada evento como se desea, pero los resultados no son los esperados.
Aquí hay un complemento de prueba que demuestra el problema:
Verás que tengo un contador que aumenta con cada elemento de selección que encuentra que puede convertir.
Notas:
- Cuando se carga la página del widget, puedo ver el aumento del contador en la consola JS como se esperaba
- Cuando agrego un nuevo widget, el código se ejecuta, sin embargo, no encuentra ningún elemento de selección en el que pueda ejecutarse, como lo demuestra found.length que es 0. Este no debería ser el caso, ya que cada nuevo widget de ese tipo debería tener un elemento de selección
- los elementos seleccionados tienen una clase para identificarlos, esta clase se elimina una vez que se aplica la biblioteca de selección para evitar la duplicación y el nuevo procesamiento de los widgets existentes.
- Antes de utilizar selectize, usé Select2, que tenía el mismo problema
- Comentando el código AJAX, esperaría que los nuevos widgets tuvieran una entrada de selección estándar. Ellos no. No sé por qué este es el caso
Entonces, ¿cómo puedo hacer que el control de selección funcione sin decirle al usuario que actualice / haga clic en guardar antes de hacer cambios?