Formularfelder

Buchungsformular erweitern

PRO-Funktion

Benutzerdefinierte Formularfelder erfordern einen Professional-Plan.

Übersicht

Mit der fields-Option können Sie das Buchungsformular um zusätzliche Felder erweitern. Alle Felder unterstützen Lokalisierung und Input-Validierung.

Standard-Felder

timum benötigt einige Felder für die Funktionalität und bietet optionale Standardfelder:

FeldTypPflicht
firstNametextJa
lastNametextJa
emailemailJa
phonetelOptional
messagetextareaOptional
agbscheckboxKonfigurierbar

Custom Fields hinzufügen

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

Feldtypen

TypBeschreibung
textEinzeiliges Textfeld
textareaMehrzeiliges Textfeld
emailE-Mail-Feld mit Validierung
telTelefon-Feld
numberNumerisches Feld
checkboxEinzelne Checkbox
selectDropdown-Auswahl

Feld-Eigenschaften

EigenschaftTypBeschreibung
typestringFeldtyp (text, textarea, email, etc.)
requiredbooleanPflichtfeld
defaultValuestringVorausgefüllter Wert
optionsarrayFür select: Auswahloptionen
patternstringRegex für Validierung
minLengthnumberMinimale Zeichenanzahl
maxLengthnumberMaximale Zeichenanzahl

Umfangreiches Beispiel

Mehrere Custom Fieldsjavascript
timum.init({
  ref: 'ihre-ressourcen-referenz',
  fields: {
    // Textfeld mit Validierung
    companyName: {
      type: 'text',
      required: true,
      minLength: 2,
      maxLength: 100
    },

    // Dropdown-Auswahl
    appointmentType: {
      type: 'select',
      required: true,
      options: ['erstbesichtigung', 'zweitbesichtigung', 'beratung']
    },

    // Numerisches Feld
    participants: {
      type: 'number',
      required: false,
      defaultValue: '1'
    },

    // Checkbox
    newsletter: {
      type: 'checkbox',
      required: false,
      defaultValue: 'false'
    },

    // Mehrzeiliges Textfeld
    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?'
    }
  }
});

Custom Fields in Callbacks

Die Werte der Custom Fields werden in den Callbacks mitgeliefert:

Custom Field Datenjavascript
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);

      // Daten an eigenes System senden
      fetch('/api/bookings', {
        method: 'POST',
        body: JSON.stringify(data)
      });
    }
  }
});

Custom Values als Message senden

Mit sendCustomValuesInMessage werden alle Custom Field Werte als kommaseparierter String an das Backend gesendet:

Als Message sendenjavascript
timum.init({
  ref: 'ihre-ressourcen-referenz',
  sendCustomValuesInMessage: true,
  fields: {
    companyName: { type: 'text' },
    department: { type: 'text' }
  }
});

// Im Backend wird gespeichert:
// message: "Firmenname: Muster GmbH, Abteilung: Vertrieb"

Validierung mit Pattern

Regex Validierungjavascript
fields: {
  postalCode: {
    type: 'text',
    required: true,
    pattern: '^[0-9]{5}$' // Deutsche PLZ
  },
  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)'
  }
}

Verwandte Themen

War diese Seite hilfreich?