Campi del modulo

Estenda il modulo di prenotazione di BookingJs con campi personalizzati: configuri i tipi di campo, la convalida dei campi obbligatori, i pattern regex e i valori predefiniti.

Funzione PRO:

Estenda il modulo di prenotazione di BookingJs con l'opzione fields per aggiungere campi aggiuntivi, incluse la localizzazione e la convalida degli input. Disponibile nei piani Professional – Visualizzi i piani.

Panoramica

Con l'opzione fields può estendere il modulo di prenotazione con campi aggiuntivi. Tutti i campi supportano la localizzazione e la convalida degli input.

Campi predefiniti

timum richiede alcuni campi per il funzionamento e offre campi predefiniti opzionali:

CampoTipoObbligatorio
firstNametext
lastNametext
emailemail
phonetelOpzionale
messagetextareaOpzionale
agbscheckboxConfigurabile

Aggiungere campi personalizzati

Campo personalizzato semplice
timum.init({
  ref: 'ihre-ressourcen-referenz',
  fields: {
    companyName: {
      type: 'text',
      required: true
    }
  },
  localization: {
    de: {
      field_companyName_label: 'Firmenname',
      field_companyName_placeholder: 'Ihre Firma GmbH'
    }
  }
});

Tipi di campo

TipoDescrizione
textCampo di testo a riga singola
textareaCampo di testo multiriga
emailCampo e-mail con convalida
telCampo telefono
numberCampo numerico
checkboxSingola casella di controllo
selectSelezione a discesa

Proprietà dei campi

ProprietàTipoDescrizione
typestringTipo di campo (text, textarea, email, ecc.)
requiredbooleanCampo obbligatorio
defaultValuestringValore precompilato
optionsarrayPer select: opzioni di selezione
patternstringRegex per la convalida
minLengthnumberNumero minimo di caratteri
maxLengthnumberNumero massimo di caratteri

Esempio completo

Più campi personalizzati
timum.init({
  ref: 'ihre-ressourcen-referenz',
  fields: {
    // Campo di testo con convalida
    companyName: {
      type: 'text',
      required: true,
      minLength: 2,
      maxLength: 100
    },

    // Selezione a discesa
    appointmentType: {
      type: 'select',
      required: true,
      options: ['erstbesichtigung', 'zweitbesichtigung', 'beratung']
    },

    // Campo numerico
    participants: {
      type: 'number',
      required: false,
      defaultValue: '1'
    },

    // Casella di controllo
    newsletter: {
      type: 'checkbox',
      required: false,
      defaultValue: 'false'
    },

    // Campo di testo multiriga
    notes: {
      type: 'textarea',
      required: false,
      maxLength: 500
    }
  },
  localization: {
    de: {
      field_companyName_label: 'Firmenname',
      field_companyName_placeholder: 'Ihre Firma',
      field_companyName_error: 'Bitte geben Sie Ihren Firmennamen an',

      field_appointmentType_label: 'Art des Termins',
      field_appointmentType_option_erstbesichtigung: 'Erstbesichtigung',
      field_appointmentType_option_zweitbesichtigung: 'Zweitbesichtigung',
      field_appointmentType_option_beratung: 'Beratungsgespräch',

      field_participants_label: 'Anzahl Teilnehmer',

      field_newsletter_label: 'Newsletter abonnieren',

      field_notes_label: 'Anmerkungen',
      field_notes_placeholder: 'Haben Sie besondere Wünsche?'
    }
  }
});

Campi personalizzati nei callback

I valori dei campi personalizzati vengono inclusi nei callback:

Dati del campo personalizzato
timum.init({
  ref: 'ihre-ressourcen-referenz',
  fields: {
    companyName: { type: 'text', required: true }
  },
  callbacks: {
    createBookingSuccessful: ({ data }) => {
      console.log('Firma:', data.companyName);
      console.log('Name:', data.firstName, data.lastName);
      console.log('E-Mail:', data.email);

      // Inviare i dati al proprio sistema
      fetch('/api/bookings', {
        method: 'POST',
        body: JSON.stringify(data)
      });
    }
  }
});

Invio dei valori personalizzati come messaggio

Con sendCustomValuesInMessage, tutti i valori dei campi personalizzati vengono inviati al backend come stringa separata da virgole:

Inviato come messaggio
timum.init({
  ref: 'ihre-ressourcen-referenz',
  sendCustomValuesInMessage: true,
  fields: {
    companyName: { type: 'text' },
    department: { type: 'text' }
  }
});

// Viene salvato nel backend come:
// message: "Nome azienda: Esempio GmbH, Reparto: Vendite"

Convalida con pattern

Convalida regex
fields: {
  postalCode: {
    type: 'text',
    required: true,
    pattern: '^[0-9]{5}$' // CAP tedesco
  },
  phoneNumber: {
    type: 'tel',
    pattern: '^\\+?[0-9\\s-]{10,}$'
  }
},
localization: {
  de: {
    field_postalCode_label: 'Postleitzahl',
    field_postalCode_error: 'Bitte geben Sie eine gültige PLZ ein (5 Ziffern)'
  }
}

Argomenti correlati