Chamar mais que um processo com ENTER

Bom dia a todos.

Eu estou fazendo um formulário pensando em otimiza-lo para coletores. Nesse form, eu uso um campo HTML Element para conseguir customizar o campo de entrada de dados. Por conta disso fiz esse JS que chama um procedimento especifico assim que identifica um “ENTER”:

$('body').on('keydown', '*', function(e) {
    if (e.key === "Enter" && e.target && ['BUTTON','SUBMIT'].indexOf(e.target.tagName) === -1) {
        e.preventDefault(); // bloqueia o comportamento padrão

        // aqui chamamos o evento Latromi
        latromi.formManager.getFormInstance().raiseFieldEvent('LOGAR', 'Click');

        return false;
    }
});

Queria modificar esse JS para poder chamar mais que um procedimento já que tenho dois HTML Element nesse relatório, com a possibilidade de criar mais.

Gostaria também de compartilhar esse JS dinâmico que consegui fazer pra armazenar os valores colocados em HTML distintos em variáveis de mesmo nome:

const myForm = (function () {

    // Registra os callbacks
    latromi.formManager.setOnFormCreatedCallback(onFormCreated);
    latromi.formManager.setOnEventFiringCallback(onEventFiring);
    latromi.formManager.setOnFieldValueChangedCallback(onFieldValueChanged);

    // Lista de campos/variáveis que deseja sincronizar
    const campos = [
        'USUARIO',
        'PLACA'
        // adicione mais conforme necessário
    ];

    function onFormCreated(ev) {
        syncInputs(ev.form, 'OUT');
    }

    function onEventFiring(ev1) { 
        syncInputs(ev1.form, 'IN');
        ev1.completeCallback = function(ev2) { syncInputs(ev2.form, 'OUT'); }
    }

    function onFieldValueChanged(ev) { }

    function syncInputs(form, direction) {
        campos.forEach(campo => {
            const input = document.getElementById(campo);
            if (!input) return; // ignora se o elemento não existe

            if (direction === 'IN') {
                // Passa valor do input → variável
                form.setVariableValue(campo, input.value);
            } else if (direction === 'OUT') {
                // Passa valor da variável → input
                input.value = form.getVariableValue(campo) ?? '';
            }
        });
    }

    return {};
})();

1 curtida

Consegui desenvolver o JS:

$('body').on('keydown', '*', function(e) {
    if (e.key === "Enter" && e.target && ['BUTTON','SUBMIT'].indexOf(e.target.tagName) === -1) {
        e.preventDefault(); // bloqueia comportamento padrão

        // obtém o ID do campo ativo
        var fieldId = e.target.id || '';
        var formInstance = latromi.formManager.getFormInstance();

        // lógica condicional por campo
        if (fieldId.includes('USUARIO')) {
            formInstance.raiseFieldEvent('LOGAR', 'Click');
        } 
        else if (fieldId.includes('PLACA')) {
            formInstance.raiseFieldEvent('INICIAR', 'Click');
        } 
        return false;
    }
});