Se ha ampliado el artículo para explicar:
- Se ha actualizado el plugin «Select2_ajax» porque tal y como estaba, no se podía dejar sin valor un campo que tuviese aplicado este plugin.
- Se ha creado otro ejemplo, que entiendo es más fácil de entender, ya que el originalmente puesto, por el modelo de datos que utiliza estaba un poco «retorcida» la lógica de funcionamiento y podía generar confusión en su uso.
Este es el modelo de datos del nuevo ejemplo llamado «s2_car» y se muestra 3 lookups dependientes.
DEMO: https://fhumanes.com/s2_car/
El código JavaScript de ADD y EDIT es:
var ctrl_s2_manufacturer_id = Runner.getControl(pageid,'s2_manufacturer_id'); var ctrl_s2_model_id = Runner.getControl(pageid,'s2_model_id'); var ctrl_s2_engine_id = Runner.getControl(pageid,'s2_engine_id'); setSession('s2_filter_manufacturer',ctrl_s2_manufacturer_id.getValue(), ctrl_s2_model_id); ctrl_s2_manufacturer_id.on('change', function() { console.log("Change Manufacturer"); setSession( 's2_filter_manufacturer',ctrl_s2_manufacturer_id.getValue(), ctrl_s2_model_id); ctrl_s2_model_id.setValue(''); ctrl_s2_engine_id.setValue(''); clearSelect2(ctrl_s2_model_id); clearSelect2(ctrl_s2_engine_id); }); ctrl_s2_model_id.on('change', function() { console.log("Change Model"); setSession( 's2_filter_model',ctrl_s2_model_id.getValue(), ctrl_s2_engine_id); ctrl_s2_engine_id.setValue(''); clearSelect2(ctrl_s2_engine_id); }); ctrl_s2_engine_id.on('change', function() { console.log("Change Engine"); });
Si deseas acceder al artículo completo, pulsa el siguiente enlace.