J'ai un sous-formulaire pouvant être répété, comportant un certain nombre de cases à cocher effectuées par les sélections effectuées dans un champ de liste faisant également partie du sous-formulaire.
J'ai ajouté une fonction onchange dans le champ de liste. Ainsi, quand il change, il déclenche ma petite fonction d'observation, qui ressemble à ceci:
// little script to check value and give notice
function watcherFunction(field) {
// get the ID
var id = jQuery(field).attr('id');
// build the target array
var target = id.split('__');
// get value
var value = jQuery(field).val();
// set notice and do house cleaning
if (2 == value) {
// no database
jQuery.UIkit.notify({message: Joomla.JText._('COM_COMPONENTBUILDER_ONLY_USE_THE_BNONE_DBB_OPTION_IF_YOU_ARE_PLANNING_ON_TARGETING_THIS_FIELD_WITH_JAVASCRIPTCUSTOM_PHP_TO_MOVE_ITS_VALUE_INTO_ANOTHER_FIELD_THAT_DOES_GET_SAVED_TO_THE_DATABASE'), timeout: 10000, status: 'warning', pos: 'top-center'});
jQuery.UIkit.notify({message: Joomla.JText._('COM_COMPONENTBUILDER_THE_BNONE_DBB_OPTION_WILL_REMOVE_THIS_FIELD_FROM_BEING_SAVED_IN_THE_DATABASE'), timeout: 5000, status: 'primary', pos: 'top-center'});
// do some house cleaning
jQuery('#'+target[0]+'__'+target[1]+'__title').prop('checked', true);
jQuery('#'+target[0]+'__'+target[1]+'__alias').prop('checked', false);
jQuery('#'+target[0]+'__'+target[1]+'__sort').prop('checked', false);
jQuery('#'+target[0]+'__'+target[1]+'__search').prop('checked', false);
jQuery('#'+target[0]+'__'+target[1]+'__filter').prop('checked', false);
jQuery('#'+target[0]+'__'+target[1]+'__link').prop('checked', false);
} else if (1 == value) {
// show in list view
jQuery.UIkit.notify({message: Joomla.JText._('COM_COMPONENTBUILDER_THE_BSHOW_IN_LIST_VIEWB_OPTION_WILL_ADD_THIS_FIELD_TO_THE_ADMIN_LIST_VIEW'), timeout: 5000, status: 'primary', pos: 'top-center'});
} else {
// do some house cleaning
jQuery('#'+target[0]+'__'+target[1]+'__sort').prop('checked', false);
jQuery('#'+target[0]+'__'+target[1]+'__filter').prop('checked', false);
jQuery('#'+target[0]+'__'+target[1]+'__link').prop('checked', false);
}
}
L'idée est qu'il mette à jour un certain nombre de cases à cocher et envoie une notification à l'utilisateur si la valeur est 2 et 1.
Les avis sont envoyés, donc je sais que cela fonctionne, mais je ne parviens pas à faire fonctionner la mise à jour des cases à cocher.
Les cases à cocher HTML ressemblent à ceci:
<input name="jform[addfields][addfields1][title]" id="jform_addfields__addfields1__title" value="1" class="inputbox" aria-invalid="false" type="checkbox">
TOUTE AIDE SERA APPRÉCIÉE!!!
Vous devez déclencher l'événement change
après avoir modifié la valeur de la case à cocher. Vous pouvez le faire comme suit:
$(checkbox).prop("checked", true).trigger("change");
Plus à ce sujet ici:
https://forum.jquery.com/topic/should-chk-prop-checked-true-trigger-change-event