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.
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);
}