">Doc

Usando il javascript puoi migliorare l'esperienza di inserimento ad esempio nascondendo campi o verificando i dati inseriti.


All'interno delle liste vai nel tab form.

Dentro i singoli campi c'è una textarea per inserire del javascript custom.

Il javascript inserito viene eseguito al caricamento della form, quando viene inviata e ogni volta che un elemento della form viene modificato. Puoi utilizzare la variabile status per identificare quando viene chiamata la funzione.

    if (status == 'start') {
        // Viene avviato il form
    }
    if (status == 'field_change') {
        // Viene modificato il campo
    }
    if (status == 'form_change') {
        // Viene modificato un qualsiasi altro campo della form
    }
    if (status == 'submit') {
        // Viene inviata al form. Puoi bloccare l'invio impostando un campo come invalid.
    }
    

Puoi usare la variabile field per riferirti al campo in cui stai scrivendo il codice. Questa variabile estende l'oggetto Dbp_field che ha le seguenti funzioni:

Puoi fare riferimento agli altri campi della form attraverso la variabile form che estend Dbp_form


Non devi inserire il codice tag <script></script>.


Attenzione un campo required anche se nascosto rimane required! In generale un campo invalid nascosto impedisce alla form di essere inviata.

Esempi:

Mostro un campo solo se il checkbox è selezionato. Per il checkbox singolo val ritorna null se non è selezionato, altrimenti ritorna il valore del checkbox. Nell'esempio il checkbox ha value="1"

    field.toggle(form.get('mycheckboxlabel').val() == 1);
    

Mostro un campo solo se un'opzione particolare di un checkboxex è selezionata.

    field.toggle(form.get('n.categories').val().indexOf('Blue') > -1);
    

Setto i checkboxes con i valori delle opzioni (deve essere un array). Se voglio un defaul uso l'array nel campo di default.

    field.val(["opt_val1","opt_val5"]);
    

Valido un campo solo se è maggiore di 10

        field.valid( field.val() < 10, 'Il campo deve essere maggiore di 10');
    

Valido una data solo se l'inizio è superiore al campo date_start

    let a = form.get('r.date_start').val();
    field.valid_range(a);
    

Valido il campo solo se è minore di 100

    field.valid_range(false,100);
    

In una tabella ripetuta valido il campo next_order dicendo che deve essere maggiore dell'istanza precedente

    if (status == 'form_change') {
    let prev_val = parseInt(form.get('my_table.next_order.prev').val());
    if (!isNaN(prev_val)) {
        field.valid( field.val() > prev_val);
    }
    }
    

Dati due select cambia le opzioni del secondo ogni volta che viene cambiato il primo

    if (status == 'start' || status == 'form_change') {
        if (form.get('PROVIN').val() == 'scelta 1') {
            field.toggle(true).choices({'1':"Male",'2':"Female"});
        } else if (form.get('PROVIN').val() == 'scelta 2') {
            field.toggle(true).choices(["Red","Blue"]);
        } else if (form.get('PROVIN').val() == 'scelta "3') {
            field.toggle(true).choices(["A","B","C"]);
        } else {
            field.toggle(false);
        }
    }
    

Imposta una data di default. Uso il timestamp in secondi.

        if (status == 'start') {
            field.val(1583677568);
        }