Campos del formulario

Amplíe el formulario de reserva de BookingJs con campos personalizados: configure tipos de campo, validación de campos obligatorios, patrones regex y valores predeterminados.

Función PRO:

Amplíe el formulario de reserva de BookingJs con la opción fields para añadir campos adicionales, incluida la localización y la validación de entradas. Disponible en los planes Professional – Ver tarifas.

Resumen

Con la opción fields, puede ampliar el formulario de reserva con campos adicionales. Todos los campos admiten localización y validación de entradas.

Campos predeterminados

timum necesita algunos campos para su funcionamiento y ofrece campos predeterminados opcionales:

CampoTipoObligatorio
firstNametext
lastNametext
emailemail
phonetelOpcional
messagetextareaOpcional
agbscheckboxConfigurable

Añadir campos personalizados

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

Tipos de campo

TipoDescripción
textCampo de texto de una línea
textareaCampo de texto multilínea
emailCampo de correo electrónico con validación
telCampo de teléfono
numberCampo numérico
checkboxCasilla de verificación única
selectSelección desplegable

Propiedades de los campos

PropiedadTipoDescripción
typestringTipo de campo (text, textarea, email, etc.)
requiredbooleanCampo obligatorio
defaultValuestringValor prellenado
optionsarrayPara select: opciones de selección
patternstringRegex para validación
minLengthnumberNúmero mínimo de caracteres
maxLengthnumberNúmero máximo de caracteres

Ejemplo completo

Varios campos personalizados
timum.init({
  ref: 'ihre-ressourcen-referenz',
  fields: {
    // Campo de texto con validación
    companyName: {
      type: 'text',
      required: true,
      minLength: 2,
      maxLength: 100
    },

    // Selección desplegable
    appointmentType: {
      type: 'select',
      required: true,
      options: ['erstbesichtigung', 'zweitbesichtigung', 'beratung']
    },

    // Campo numérico
    participants: {
      type: 'number',
      required: false,
      defaultValue: '1'
    },

    // Casilla de verificación
    newsletter: {
      type: 'checkbox',
      required: false,
      defaultValue: 'false'
    },

    // Campo de texto multilínea
    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?'
    }
  }
});

Campos personalizados en los callbacks

Los valores de los campos personalizados se incluyen en los callbacks:

Datos de campo personalizado
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);

      // Enviar los datos a su propio sistema
      fetch('/api/bookings', {
        method: 'POST',
        body: JSON.stringify(data)
      });
    }
  }
});

Envío de valores personalizados como mensaje

Con sendCustomValuesInMessage, todos los valores de los campos personalizados se envían al backend como una cadena separada por comas:

Enviado como mensaje
timum.init({
  ref: 'ihre-ressourcen-referenz',
  sendCustomValuesInMessage: true,
  fields: {
    companyName: { type: 'text' },
    department: { type: 'text' }
  }
});

// Se almacena en el backend como:
// message: "Nombre de la empresa: Ejemplo GmbH, Departamento: Ventas"

Validación con pattern

Validación regex
fields: {
  postalCode: {
    type: 'text',
    required: true,
    pattern: '^[0-9]{5}$' // Código postal alemán
  },
  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)'
  }
}

Temas relacionados