Bezplatné standardní dodání při objednávce nad 2 460 Kč
Vyhledat

Firemní dárky

Žádost o informacei

Přidali jste produkty do svého dotazu. Uveďte množství a vyplňte formulář. Náš zástupce vás bude kontaktovat.

Nepřidali jste žádné produkty do svého dotazu. Klikněte na odkaz pro zobrazení a přidání produktů do svého dotazu pro přesnější nabídku nebo pokračujte bez produktů.

Συμπληρώστε τα στοιχεία σας και ένας από τους διαχειριστές λογαριασμού εταιρικών δώρων θα επικοινωνήσει μαζί σας.
Salutation *
Paní/slečna.
Pan
Křestní jméno *
Příjmení *
Pracovní pozice
Název společnosti *
Please select a country... *
Άγιος Βαρθολομαίος
Άγιος Βικέντιος και Γρεναδίνες
Άγιος Μαρτίνος (Γαλλικό τμήμα)
Άγιος Μαρτίνος (Ολλανδικό τμήμα)
Άγιος Χριστόφορος και Νέβις
Αίγυπτος
Αγία Ελένη, Ασενσιόν και Τριστάν ντα Κούνια
Αγία Λουκία
Αγκόλα
Αζερμπαϊτζάν
Αιθιοπία
Ακτή Ελεφαντοστού
Αλβανία
Αλγερία
Αμερικανικές Παρθένοι Νήσοι
Αμερικανική Σαμόα
Ανατολικό Τιμόρ
Ανγκουίλα
Ανδόρα
Αντίγκουα και Μπαρμπούντα
Ανταρκτική
Απομακρυσμένες Νησίδες ΗΠΑ
Αργεντινή
Αρμενία
Αρούμπα
Αυστρία
Αυστραλία
Αφγανιστάν
Αϊτή
Βέλγιο
Βανουάτου
Βατικανό
Βενεζουέλα
Βερμούδες
Βιετνάμ
Βολιβία
Βοσνία-Ερζεγοβίνη
Βουλγαρία
Βραζιλία
Βρετανικά Εδάφη Ινδικού Ωκεανού
Βρετανικές Παρθένοι Νήσοι
Βόρεια Κορέα
Βόρεια Μακεδονία
Βόρειες Μαριάνες Νήσοι
Γαλλία
Γαλλικά Νότια Εδάφη
Γαλλική Γουιάνα
Γαλλική Πολυνησία
Γερμανία
Γεωργία
Γιβραλτάρ
Γκάμπια
Γκάνα
Γκαμπόν
Γκουάμ
Γκουέρνσεϊ
Γουαδελούπη
Γουατεμάλα
Γουιάνα
Γουινέα
Γουινέα Μπισάου
Γρενάδα
Γροιλανδία
Δανία
Δομινικανή Δημοκρατία
Δυτική Σαχάρα
Ελ Σαλβαδόρ
Ελβετία
Ελλάδα
Ερυθραία
Εσθονία
Ζάμπια
Ζιμπάμπουε
Ηνωμένα Αραβικά Εμιράτα
Ηνωμένες Πολιτείες
Ηνωμένο Βασίλειο
Ηπειρωτική Κίνα
Ιαπωνία
Ινδία
Ινδονησία
Ιορδανία
Ιράκ
Ιράν
Ιρλανδία
Ισημερινή Γουινέα
Ισημερινός
Ισλανδία
Ισπανία
Ισραήλ
Ιταλία
Κένυα
Καζακστάν
Καμερούν
Καμπότζη
Καναδάς
Κατάρ
Κεντροαφρικανική Δημοκρατία
Κιργιστάν
Κιριμπάτι
Κολομβία
Κομόρες
Κονγκό
Κουβέιτ
Κουρασάο
Κούβα
Κροατία
Κόσοβο
Κόστα Ρίκα
Κύπρος
Λάος
Λίβανος
Λαϊκή Δημοκρατία του Κονγκό
Λεσότο
Λετονία
Λευκορωσία
Λιβερία
Λιβύη
Λιθουανία
Λιχτενστάιν
Λουξεμβούργο
Μάλι
Μάλτα
Μαγιότ
Μαδαγασκάρη
Μακάου
Μαλάουι
Μαλαισία
Μαλδίβες
Μαρτινίκα
Μαρόκο
Μαυρίκιος
Μαυριτανία
Μαυροβούνιο
Μεξικό
Μογγολία
Μοζαμβίκη
Μολδαβία
Μονακό
Μονσεράτ
Μπανγκλαντές
Μπαρμπάντος
Μπαχάμες
Μπαχρέιν
Μπελίζ
Μπενίν
Μποναίρ, Άγιος Ευστάθιος και Σάμπα
Μποτσουάνα
Μπουρκίνα Φάσο
Μπουρούντι
Μπουτάν
Μπρουνέι
Μυανμάρ
Νέα Ζηλανδία
Νέα Καληδονία
Νήσοι Άλαντ
Νήσοι Κέιμαν
Νήσοι Κουκ
Νήσοι Μάρσαλ
Νήσοι Τερκς και Κέικος
Νήσοι Φερόες
Νήσοι Φώκλαντ
Νήσοι Χερντ και Μακ Ντόναλντ
Νήσος Μαν
Νήσος Μπουβέ
Νήσος των Χριστουγέννων
Νίγηρας
Νίουε
Ναμίμπια
Ναουρού
Νεπάλ
Νησί Νόρφολκ
Νησιά Κόκος (Κήλινγκ)
Νησιά Σολομώντα
Νιγηρία
Νικαράγουα
Νορβηγία
Ντομίνικα
Νότια Αφρική
Νότια Κορέα
Νότιος Γεωργία και Νότιοι Νήσοι Σάντουιτς
Ολλανδία
Ομάν
Ομόσπονδες Πολιτείες της Μικρονησίας
Ονδούρα
Ουαλίς και Φουτουνά
Ουγγαρία
Ουγκάντα
Ουζμπεκιστάν
Ουκρανία
Ουρουγουάη
Πίτκαιρν
Πακιστάν
Παλάου
Παλαιστινιακά εδάφη
Παναμάς
Παπούα Νέα Γουινέα
Παραγουάη
Περού
Πολωνία
Πορτογαλία
Πουέρτο Ρίκο
Πράσινο Ακρωτήριο
Ρεουνιόν
Ρουάντα
Ρουμανία
Σάο Τομέ και Πρίνσιπε
Σαμόα
Σαν Μαρίνο
Σαουδική Αραβία
Σβάλμπαρντ και Γιαν Μάγεν
Σενεγάλη
Σεντ Πιέρ και Μικελόν
Σερβία
Σεϋχέλλες
Σιέρα Λεόνε
Σιγκαπούρη
Σλοβακία
Σλοβενία
Σομαλία
Σουαζιλάνδη
Σουδάν
Σουηδία
Σουρινάμ
Σρι Λάνκα
Συρία
Τανζανία
Τατζικιστάν
Ταϊβάν
Ταϊλάνδη
Τζέρσεϊ
Τζαμάικα
Τζιμπουτί
Τοκελάου
Τουβαλού
Τουρκία
Τουρκμενιστάν
Τρινιντάντ και Τομπάγκο
Τσαντ
Τσεχία
Τυνησία
Τόγκο
Τόνγκα
Υεμένη
Φίτζι
Φιλιππίνες
Φινλανδία
Χιλή
Χονγκ Κονγκ
Telefonní číslo *
Pracovní e-mail *
Potvrďte obchodní e-mailovou adresu  *
Počet zaměstnanců *
1-10 υπαλλήλους
11-50 υπαλλήλους
51-200 υπαλλήλους
201-500 υπαλλήλους
501-1,000 υπαλλήλους
1,001-5,000 υπαλλήλους
5,001-10,000 υπαλλήλους
>10,000 υπαλλήλους
Zbývá 1000 znaků
* Povinná pole
.on('success.field.fv', function() { /* note: we need to check if there is an error in the form, as the plugin does a validation on field level. Validating the whole form on blur of a field is no option, as the customer does not want to see error messages on all fields when entering one field. In case of an error on at least one field we disable the submit button manually */ var $form = $(this).closest('form'); if ($form.find('.form-group.has-error').length > 0) { var $button = $form.find('.js-button'); if (!$button.hasClass('disabled')) { $button.addClass('disabled'); } } }) .on('err.field.fv', function(e, data) { /* * On error field validation, enable submit button. * Source: https://old.formvalidation.io/examples/enabling-submit-button/ */ data.fv.disableSubmitButtons(false); $(data.element).attr('aria-invalid', 'true'); // Get error messages var messages = data.fv.getMessages(data.element); // ✅ Announce error to screen readers if ($(data.element).closest('.js-advent-calendar-container').length > 0 && messages.length > 0 && window.ACC && window.ACC.adventcalendar && typeof ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes === 'function') { const selectedField = data.element.attr('id'); ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes(selectedField, true); ACC.adventcalendar.announceToScreenReader('Error: ' + messages[0]); } if(data.element.closest('.form-combo-molecule').length){ /* Get the messages of field */ var messages = data.fv.getMessages(data.element); /* Get the error message content of the field */ var errorContent = data.element.closest('.form-combo-molecule').find('.errors'); /* Get the hidden error message of the field */ var errorField = errorContent.find('.swa-form-input__error-message[data-field="' + data.field + '"][style="display: none;"]'); /* Loop over the messages */ for (var i in messages) { if (errorField[1] == undefined) { var newErrorContainer = document.createElement("small"); $(newErrorContainer).attr("class", "swa-form-input__error-message swa-headline-sans--supertiny"); $(newErrorContainer).attr("data-field", data.field); $(newErrorContainer).attr("data-fv-validator", "callback"); $(newErrorContainer).attr("data-fv-for", $(data.element[0]).attr("name") ); $(newErrorContainer).attr("data-fv-result", "INVALID"); $(newErrorContainer).attr("data-tracked", "true"); $(newErrorContainer).html(messages[i]); if (errorContent.text().includes(messages[i])) { $(newErrorContainer).hide(); } errorContent.append(newErrorContainer); } } } }) .on('success.field.fv', function(e, data) { /* * On success field validation, enable submit button. * Source: https://old.formvalidation.io/examples/enabling-submit-button/ */ if ($(data.element).closest('.js-advent-calendar-container').length > 0 && window.ACC && window.ACC.adventcalendar && typeof ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes === 'function') { const selectedField = data.element.attr('id'); ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes(selectedField, false); } data.fv.disableSubmitButtons(false); // ✅ Remove aria-invalid on field $(data.element).attr('aria-invalid', 'false'); /* Remove the field messages */ var $errorContent = data.element.closest('.form-combo-molecule').find('.errors'); $errorContent.find('.swa-form-input__error-message[data-field="' + data.field + '"]').remove(); $errorContent.find('.swa-form-input__error-message[data-fv-result="INVALID"]').removeAttr("style"); }) .on('success.form.fv', function() { var formId = 'corporateGiftsContactForm'; if (!formId || formId === 'cfRequest' || formId === 'cfResponse') { formId = 'corporateGiftsContactFormDefinition'; } ACC.tracking.pushFormSubmit(formId); }); var replaceDatePatternWithValue = function(mandatory, fieldConfigCode, fieldConfigPattern) { var date = fieldConfigPattern.toUpperCase(); var year = $("#" + fieldConfigCode + "_year").val(); var month = $("#" + fieldConfigCode + "_month").val(); var day = $("#" + fieldConfigCode + "_day").val(); date = date.replace(/[Y]+/, year); date = date.replace(/[M]+/, month); date = date.replace(/[D]+/, day); var hiddenDateField = $('.js-' + fieldConfigCode + '_hidden'); if (mandatory) { hiddenDateField.val(date); } else { hiddenDateField.val(date == "" ? "" : date); } }; var triggerFormValidation = function(fieldId, mandatory, fieldCode, dateFormat) { replaceDatePatternWithValue(mandatory, fieldCode, dateFormat); $('.js-fieldCode').formValidation('revalidateField', 'values[fieldCode_'+ fieldId + ']'); }; var removeDateMoleculeError = function(molecule) { if(molecule.hasClass('has-error')){ molecule.removeClass('has-error'); molecule.find('.help-block').find('span').remove(); } };
$(this).closest('#corporateGiftsContactFormConfigWrapper').find('.js-corporateGiftsContactFormConfig') .formValidation( { autoFocus: false, framework: 'bootstrap', icon: { valid: null, invalid: null, validating: null }, fields: { 'values[corporateGiftsContactFormDefinition_title]': { trigger: 'change', validators: { notEmpty: { message: 'Zvolte prosím titul.', message_en: 'Zvolte prosím titul.' } } }, 'values[corporateGiftsContactFormDefinition_firstName]': { trigger: 'blur', validators: { callback: { callback: function(value, validator, $field) { var messages = []; var messagesEN = []; var errorOccured = false; if ($field.attr('regexCheckDisabled') === 'true') { return true; } if (!value.trim().match(new RegExp('^[. \\u3000\'\\-a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F\\u4E00-\\u9FFF\\u3400-\\u4DBF\\u3040-\\u30FF\\uF900-\\uFAFF\\uFF66-\\uFF9F\\u1100-\\u11FF\\u3130-\\u318F\\uA960-\\uA97F\\uAC00-\\uD7FF\\u3005\\u3006\\u3024\\u3029\\u3031-\\u3035\\u0E00-\\u0E7F]*\u0024', ''))) { messages.push('Povolena jsou pouze písmena'); messagesEN.push('Povolena jsou pouze písmena'); errorOccured |= true; } if (!value.trim().match(new RegExp('(?:^\u0024)|(?:^.*[a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F]{2}.*\u0024)|(?:^.*[^a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F. \\u3000\'\\-].*\u0024)', ''))) { messages.push('Minimální délka je 2 znaků'); messagesEN.push('Minimální délka je 2 znaků'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, notEmpty: { message: 'Zadejte prosím křestní jméno.', message_en: 'Zadejte prosím křestní jméno.' }, stringLength: { message: 'Přesáhli jste maximální povolenou délku 40 znaků v tomto poli.', message_en: 'You have exceeded the maximum length of 40 characters for this field', max: 40 }, } }, 'values[corporateGiftsContactFormDefinition_lastName]': { trigger: 'blur', validators: { callback: { callback: function(value, validator, $field) { var messages = []; var messagesEN = []; var errorOccured = false; if ($field.attr('regexCheckDisabled') === 'true') { return true; } if (!value.trim().match(new RegExp('^[. \\u3000\'\\-a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F\\u4E00-\\u9FFF\\u3400-\\u4DBF\\u3040-\\u30FF\\uF900-\\uFAFF\\uFF66-\\uFF9F\\u1100-\\u11FF\\u3130-\\u318F\\uA960-\\uA97F\\uAC00-\\uD7FF\\u3005\\u3006\\u3024\\u3029\\u3031-\\u3035\\u0E00-\\u0E7F]*\u0024', ''))) { messages.push('Povolena jsou pouze písmena'); messagesEN.push('Povolena jsou pouze písmena'); errorOccured |= true; } if (!value.trim().match(new RegExp('(?:^\u0024)|(?:^.*[a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F]{2}.*\u0024)|(?:^.*[^a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F. \\u3000\'\\-].*\u0024)', ''))) { messages.push('Minimální délka je 2 znaků'); messagesEN.push('Minimální délka je 2 znaků'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, notEmpty: { message: 'Zadejte prosím své příjmení.', message_en: 'Zadejte prosím své příjmení.' }, stringLength: { message: 'Přesáhli jste maximální povolenou délku 40 znaků v tomto poli.', message_en: 'You have exceeded the maximum length of 40 characters for this field', max: 40 }, } }, 'values[corporateGiftsContactFormDefinition_jobTitle]': { trigger: 'blur', validators: { stringLength: { message: 'Přesáhli jste maximální povolenou délku 40 znaků v tomto poli.', message_en: 'You have exceeded the maximum length of 40 characters for this field', max: 40 }, } }, 'values[corporateGiftsContactFormDefinition_companyName]': { trigger: 'blur', validators: { notEmpty: { message: 'Uveďte název vaší společnosti.', message_en: 'Uveďte název vaší společnosti.' }, stringLength: { message: 'Přesáhli jste maximální povolenou délku 40 znaků v tomto poli.', message_en: 'You have exceeded the maximum length of 40 characters for this field', max: 40 }, } }, 'values[corporateGiftsContactFormDefinition_email]': { trigger: 'blur', validators: { regexp: { regexp: new RegExp('^(?=.{0,255}\u0024)(?=.{0,64}@)(?:(?!^\\.)(?!.*\\.@)(?!.*\\.\\.)[a-zA-Z0-9!#.\u0024%&\'*+\/=?^_‘{|}~-]+|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f]){1,62}\")@(?!-)(?!.*\\.-)(?!.*-\\.)(?:[a-zA-Z0-9-]{1,61}\\.){1,126}(?=[a-zA-Z0-9-]*[a-zA-Z][a-zA-Z0-9-]*\u0024)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\u0024', ''), message: 'Uveďte svou pracovní e-mailovou adresu.', message_en: 'Uveďte svou pracovní e-mailovou adresu.' }, notEmpty: { message: 'Uveďte svou pracovní e-mailovou adresu.', message_en: 'Uveďte svou pracovní e-mailovou adresu.' }, stringLength: { message: 'Počet znaků v tomto poli musí být od 0 do 70.', message_en: 'The number of characters for this field must be between 0 and 70', min: 0 , max: 70 }, } }, 'values[corporateGiftsContactFormDefinition_emailConfirm]': { trigger: 'blur', validators: { regexp: { regexp: new RegExp('^(?=.{0,255}\u0024)(?=.{0,64}@)(?:(?!^\\.)(?!.*\\.@)(?!.*\\.\\.)[a-zA-Z0-9!#.\u0024%&\'*+\/=?^_‘{|}~-]+|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f]){1,62}\")@(?!-)(?!.*\\.-)(?!.*-\\.)(?:[a-zA-Z0-9-]{1,61}\\.){1,126}(?=[a-zA-Z0-9-]*[a-zA-Z][a-zA-Z0-9-]*\u0024)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\u0024', ''), message: 'Uveďte svou pracovní e-mailovou adresu.', message_en: 'Uveďte svou pracovní e-mailovou adresu.' }, notEmpty: { message: 'Uveďte svou pracovní e-mailovou adresu.', message_en: 'Uveďte svou pracovní e-mailovou adresu.' }, stringLength: { message: 'Počet znaků v tomto poli musí být od 0 do 70.', message_en: 'The number of characters for this field must be between 0 and 70', min: 0 , max: 70 }, identical: { field: 'values[corporateGiftsContactFormDefinition_email]', message: 'Pole se neshodují.', message_en: 'The fields do not match.' } } }, 'values[corporateGiftsContactFormDefinition_country]': { trigger: 'change', validators: { notEmpty: { message: 'Zadejte prosím svou zemi\/region.', message_en: 'Zadejte prosím svou zemi\/region.' } } }, 'values[corporateGiftsContactFormDefinition_phone]': { trigger: 'blur', validators: { callback: { callback: function(value, validator, $field) { var messages = []; var messagesEN = []; var errorOccured = false; if ($field.attr('regexCheckDisabled') === 'true') { return true; } if (!value.trim().match(new RegExp('^[\\\\+]{0,1}[0-9\\\\(\\\\)\\- \\\\.]*\u0024', ''))) { messages.push('Zadejte prosím své telefonní číslo. (pouze číslice, bez mezer)'); messagesEN.push('Zadejte prosím své telefonní číslo. (pouze číslice, bez mezer)'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, notEmpty: { message: 'Zadejte prosím své telefonní číslo.', message_en: 'Zadejte prosím své telefonní číslo.' }, stringLength: { message: 'Přesáhli jste maximální povolenou délku 20 znaků v tomto poli.', message_en: 'You have exceeded the maximum length of 20 characters for this field', max: 20 }, callbackPhone: { alias: 'callback', message: 'Zadejte prosím své telefonní číslo.', message_en: 'Zadejte prosím své telefonní číslo.', callback: function (value, validator, $field) { if (value === '') { return true; } var prefixCountry = $field.siblings('.flag-container').children('.selected-flag').attr('title'); var isValidPrefix = prefixCountry !== undefined && prefixCountry !== 'Unknown'; if (!isValidPrefix) { return false; } var prefix = prefixCountry.split("+")[1]; var isMinimumLength = true; var minLength = ""; if (minLength !== null) { if (value.startsWith("+")) { if ((value.length - prefix.length - 1) < minLength) { isMinimumLength = false; } } else if (value.length < minLength) { isMinimumLength = false; } } return isMinimumLength; } }, } }, 'values[corporateGiftsContactFormDefinition_companySize]': { trigger: 'change', validators: { notEmpty: { message: '\u003Cspan style=\'color:#ff0000;\'\u003Eerror.genericConfigurableForm.global-b2bCustomerContact-companySize, error.genericConfigurableForm.companySize\u003C\/span\u003E', message_en: '\u003Cspan style=\'color:#ff0000;\'\u003Eerror.genericConfigurableForm.global-b2bCustomerContact-companySize, error.genericConfigurableForm.companySize\u003C\/span\u003E' } } }, 'values[corporateGiftsContactFormDefinition_message]': { trigger: 'blur', validators: { notEmpty: { message: 'Please fill in your contact reason', message_en: 'Please fill in your contact reason' }, stringLength: { message: 'Počet znaků v tomto poli musí být od 0 do 1000.', message_en: 'The number of characters for this field must be between 0 and 1000', min: 0 , max: 1000 }, } }, } } ) .on('success.field.fv', function() { /* note: we need to check if there is an error in the form, as the plugin does a validation on field level. Validating the whole form on blur of a field is no option, as the customer does not want to see error messages on all fields when entering one field. In case of an error on at least one field we disable the submit button manually */ var $form = $(this).closest('form'); if ($form.find('.form-group.has-error').length > 0) { var $button = $form.find('.js-button'); if (!$button.hasClass('disabled')) { $button.addClass('disabled'); } } }) .on('err.field.fv', function(e, data) { /* * On error field validation, enable submit button. * Source: https://old.formvalidation.io/examples/enabling-submit-button/ */ data.fv.disableSubmitButtons(false); $(data.element).attr('aria-invalid', 'true'); // Get error messages var messages = data.fv.getMessages(data.element); // ✅ Announce error to screen readers if ($(data.element).closest('.js-advent-calendar-container').length > 0 && messages.length > 0 && window.ACC && window.ACC.adventcalendar && typeof ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes === 'function') { const selectedField = data.element.attr('id'); ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes(selectedField, true); ACC.adventcalendar.announceToScreenReader('Error: ' + messages[0]); } if(data.element.closest('.form-combo-molecule').length){ /* Get the messages of field */ var messages = data.fv.getMessages(data.element); /* Get the error message content of the field */ var errorContent = data.element.closest('.form-combo-molecule').find('.errors'); /* Get the hidden error message of the field */ var errorField = errorContent.find('.swa-form-input__error-message[data-field="' + data.field + '"][style="display: none;"]'); /* Loop over the messages */ for (var i in messages) { if (errorField[1] == undefined) { var newErrorContainer = document.createElement("small"); $(newErrorContainer).attr("class", "swa-form-input__error-message swa-headline-sans--supertiny"); $(newErrorContainer).attr("data-field", data.field); $(newErrorContainer).attr("data-fv-validator", "callback"); $(newErrorContainer).attr("data-fv-for", $(data.element[0]).attr("name") ); $(newErrorContainer).attr("data-fv-result", "INVALID"); $(newErrorContainer).attr("data-tracked", "true"); $(newErrorContainer).html(messages[i]); if (errorContent.text().includes(messages[i])) { $(newErrorContainer).hide(); } errorContent.append(newErrorContainer); } } } }) .on('success.field.fv', function(e, data) { /* * On success field validation, enable submit button. * Source: https://old.formvalidation.io/examples/enabling-submit-button/ */ if ($(data.element).closest('.js-advent-calendar-container').length > 0 && window.ACC && window.ACC.adventcalendar && typeof ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes === 'function') { const selectedField = data.element.attr('id'); ACC.adventcalendar.adventcalendarUpdateErrorSpanAttributes(selectedField, false); } data.fv.disableSubmitButtons(false); // ✅ Remove aria-invalid on field $(data.element).attr('aria-invalid', 'false'); /* Remove the field messages */ var $errorContent = data.element.closest('.form-combo-molecule').find('.errors'); $errorContent.find('.swa-form-input__error-message[data-field="' + data.field + '"]').remove(); $errorContent.find('.swa-form-input__error-message[data-fv-result="INVALID"]').removeAttr("style"); }) .on('success.form.fv', function() { var formId = 'corporateGiftsContactForm'; if (!formId || formId === 'cfRequest' || formId === 'cfResponse') { formId = 'corporateGiftsContactFormDefinition'; } ACC.tracking.pushFormSubmit(formId); }); var replaceDatePatternWithValue = function(mandatory, fieldConfigCode, fieldConfigPattern) { var date = fieldConfigPattern.toUpperCase(); var year = $("#" + fieldConfigCode + "_year").val(); var month = $("#" + fieldConfigCode + "_month").val(); var day = $("#" + fieldConfigCode + "_day").val(); date = date.replace(/[Y]+/, year); date = date.replace(/[M]+/, month); date = date.replace(/[D]+/, day); var hiddenDateField = $('.js-' + fieldConfigCode + '_hidden'); if (mandatory) { hiddenDateField.val(date); } else { hiddenDateField.val(date == "" ? "" : date); } }; var triggerFormValidation = function(fieldId, mandatory, fieldCode, dateFormat) { replaceDatePatternWithValue(mandatory, fieldCode, dateFormat); $('.js-fieldCode').formValidation('revalidateField', 'values[fieldCode_'+ fieldId + ']'); }; var removeDateMoleculeError = function(molecule) { if(molecule.hasClass('has-error')){ molecule.removeClass('has-error'); molecule.find('.help-block').find('span').remove(); } };