(function() { window.initDQ = function() { $(document) .off('change input paste', '.dq-edit-container input, .dq-edit-container textarea, .dq-edit-container select') .on('change input paste', '.dq-edit-container input, .dq-edit-container textarea, .dq-edit-container select', function() { let key = $(this).closest('.dq-line').attr('dq-key'), dataElem = $(this).closest('.dq-edit-container').find('>.dq-data-map').first(), current = JSON.parse(dataElem.text()); current[key] = $(this).val(); let serialized = JSON.stringify(current); dataElem.text(serialized); $(this).closest('form').find('input[name="data"]').val(serialized); let fullData = { lines: JSON.parse($(this).closest('.dq-edit-container').find('>.dq-definition').first().text()), dataMap: current }; $(this).closest('form').find('input[name="data"]').val(JSON.stringify(fullData)); }); }; addMCInitializer('dq-edit', initDQ, '.dq-edit-container'); }).call(window);