Javascript: trigger change sur tableau?

Salut

J’ai la configuration suivante dans les devices de mon plugin:

{"serialNumber":"T8113NXXX","eufyName":"Terrasse","eufyModel":"T8113","hardwareVersion":"eufy2_mini","softwareVersion":"1.7.4","createtime":"2026-01-02 15:40:26","interfaces":["device"],"updatetime":"2026-01-04 19:46:31","eufyType":"Camera 2","panTilt":"0"}

Je voudrais détecter la présence du tableau interfaces mais la fonction n’est jamais appelée:

$(".eqLogicAttr[data-l1key='configuration'][data-l2key='interfaces']").change(function () {
alert ($(this).value())
});

par contre c’est ok si je prends une autre clé comme panTilt.
[EDIT] Cette clé n’apparait pas dans le html. dois-je rajouter un input hidden?
Des suggestions?

Merci pour votre aide

Hello,

Effectivement, si les éléments n’existe pas dans le DOM il ne risque pas d’avoir d’évènement.

Oui, mais peut-être que tu es sur une fausse route ? il faudrait connaitre le contexte. Comment cette clé est créée/modifiée ?

merci pour ta réponse @Phpvarious
oui je la crée dans core/class/eufy.class.php lors de la création du device.
j’en ai besoin pour faire de l’affichage contextuel d’infos de config (panTilt) dans desktop/php/eufy.php quand interfaces contient la valeur device.

Il est possible de déclencher tes évènements avec la fonction printEqLogic(_eqLogic) a mettre dans eufy.js avec un truc du genre :

function printEqLogic(_eqLogic) {
  if (isset(_eqLogic.configuration)) {
    if (isset(_eqLogic.configuration.interfaces)) {
      // interface existe ... déclenchement d'évènements ...
    }
  }
}

Merci pour ta suggestion ca a marché :wink:
Sinon pour info j’arrivais bien a declencher la fonction change() en ajoutant:

<span class="hidden eqLogicAttr" data-l1key="configuration" data-l2key="interfaces"></span>

mais le contenu était vide…peut-être que les tableaux ne sont pas gérés par le core?
j’ai abandonné cette piste

si, c’est bien géré, mais jusqu’à 3 niveaux il me semble : data-l1key, data-l2key et data-l3key, mais pour ton cas il manquerai une clé dans ton tableau : ex "interfaces":["macle":"device"],
Ce qui donnerai dans ton html :
data-l1key="configuration" data-l2key="interfaces" data-l3key="macle"
mais attention, si tu as plusieurs clé/valeur dans interfaces, il faut qu’il soit tous présents dans ton html aussi, car au save le core supprimera ceux qui ne sont pas présent.

Honnêtement, pour ton cas de figure, je préfère utiliser le printEqLogic qui est plus simple a mon avis.

ah j’avais juste affiché $(this).value() j’avais pas pensé a data-l3key.
Merci pour la précision

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.