Livraison standard gratuite pour
une commande supérieure à 95 CHF

Cadeaux d'affaires

Demande de renseignementsi

Vous avez ajouté de nouveaux produits à votre demande. Veuillez indiquer les quantités désirées et remplir le formulaire. Un de nos collaborateurs en charge vous contactera.

Vous n’avez ajouté aucun produit à votre demande. Cliquez sur le lien pour visualiser et ajouter des produits à votre demande et obtenir un devis plus précis, ou continuez sans produits.

โปรดป้อนรายละเอียดและผู้จัดการดูแลลูกค้า Corporate Gifts ของเราจะติดต่อคุณ
Prénom *
Nom *
Intitulé du poste
Nom de la société : *
Veuillez choisir un pays *
กรีซ
กรีนแลนด์
กวม
กัมพูชา
กัวเดอลุป
กัวเตมาลา
กาตาร์
กานา
กาบอง
กายอานา
กินี
กินี-บิสเซา
คองโก
คอสตาริกา
คอโมโรส
คาซัคสถาน
คิริบาส
คิวบา
คีร์กีซสถาน
คูราเซา
คูเวต
จอร์เจีย
จอร์แดน
จาไมกา
จิบูตี
จีนแผ่นดินใหญ่
ชาด
ชิลี
ซานมารีโน
ซามัว
ซาอุดีอาระเบีย
ซาฮาราตะวันตก
ซิมบับเว
ซูดาน
ซูรินาเม
ญี่ปุ่น
ดินแดนปาเลสไตน์
ตรินิแดดและโตเบโก
ตองกา
ติมอร์-เลสเต
ตุรกี
ตูนิเซีย
ตูวาลู
ทาจิกิสถาน
นครรัฐวาติกัน
นอร์เวย์
นามิเบีย
นาอูรู
นิการากัว
นิวซีแลนด์
นิวแคลิโดเนีย
นีอูเอ
บราซิล
บริติชอินเดียนโอเชียนเทร์ริทอรี
บรูไนดารุสซาลาม
บอตสวานา
บอสเนียและเฮอร์เซโกวีนา
บังกลาเทศ
บัลแกเรีย
บาร์เบโดส
บาห์เรน
บาฮามาส
บุรุนดี
บูร์กินาฟาโซ
ประเทศไทย
ปากีสถาน
ปานามา
ปาปัวนิวกินี
ปารากวัย
ปาเลา
ฝรั่งเศส
ฟิจิ
ฟินแลนด์
ฟิลิปปินส์
ภูฏาน
มองโกเลีย
มอนต์เซอร์รัต
มอนเตเนโกร
มอริเชียส
มอริเตเนีย
มอลตา
มอลโดวา
มัลดีฟส์
มาซิโดเนีย
มาดากัสการ์
มายอต
มาร์ตินีค
มาลาวี
มาลี
มาเลเซีย
ยิบรอลตาร์
ยูกันดา
ยูเครน
รวันดา
ลักเซมเบิร์ก
ลัตเวีย
ลิกเตนสไตน์
ลิทัวเนีย
วานูอาตู
วาลลิสและฟุตูนา
ศรีลังกา
สฟาลบาร์และยานไมเอน
สวาซิแลนด์
สวิตเซอร์แลนด์
สวีเดน
สหพันธรัฐไมโครนีเชีย
สหรัฐอาหรับเอมิเรตส์
สหรัฐอเมริกา
สหราชอาณาจักร
สาธารณรัฐประชาธิปไตยคองโก
สาธารณรัฐประชาธิปไตยประชาชนลาว
สาธารณรัฐประชาธิปไตยประชาชนเกาหลี
สาธารณรัฐสังคมนิยมประชาชนอาหรับลิเบีย
สาธารณรัฐอาหรับซีเรีย
สาธารณรัฐเกาหลี
สาธารณรัฐเช็ก
สาธารณรัฐแอฟริกากลาง
สาธารณรัฐโดมินิกัน
สิงคโปร์
สเปน
สโลวาเกีย
สโลวีเนีย
หมู่เกาะคุก
หมู่เกาะนอร์เทิร์นมาเรียนา
หมู่เกาะพิตแคร์น
หมู่เกาะฟอล์กแลนด์
หมู่เกาะมาร์แชลล์
หมู่เกาะรอบนอกของสหรัฐอเมริกา
หมู่เกาะเคย์แมน
หมู่เกาะเติกส์และหมู่เกาะเคคอส
หมู่เกาะเวอร์จินของสหรัฐอเมริกา
หมู่เกาะเวอร์จินของอังกฤษ
หมู่เกาะแฟโร
หมู่เกาะโคโคส (หมู่เกาะคีลิง)
หมู่เกาะโซโลมอน
หมู่เกาะโบแนเรอ ซินต์เอิสตาซียึส และซาบา
หมู่เกาะโอลันด์
ออสเตรีย
ออสเตรเลีย
อันดอร์รา
อัฟกานิสถาน
อารูบา
อาร์เจนตินา
อาร์เมเนีย
อาเซอร์ไบจาน
อิตาลี
อินเดีย
อินโดนีเซีย
อิรัก
อิสราเอล
อิหร่าน
อิเควทอเรียลกินี
อียิปต์
อุซเบกิสถาน
อุรุกวัย
อเมริกันซามัว
ฮอนดูรัส
ฮังการี
เกรเนดา
เกาะคริสต์มาส
เกาะนอร์ฟอล์ก
เกาะบูเวต
เกาะเซนต์มาร์ติน (ส่วนที่เป็นดินแดนของฝรั่งเศส)
เกาะเซนต์มาร์ติน (ส่วนที่เป็นดินแดนของเนเธอร์แลนด์)
เกาะเฮิร์ดและหมู่เกาะแมคโดนัลด์
เกิร์นซีย์
เขตบริหารพิเศษมาเก๊า
เขตบริหารพิเศษฮ่องกง
เคนยา
เคปเวิร์ด
เจอร์ซีย์
เซนต์คิตส์และเนวิส
เซนต์บาร์เตเลมี
เซนต์ลูเซีย
เซนต์วินเซนต์และเกรนาดีนส์
เซนต์เฮเลนา อัสเซนชัน และตริสตันดากูนยา
เซอร์เบีย
เซาตูเมและปรินซิปี
เซาท์จอร์เจีย และหมู่เกาะเซาท์แซนด์วิช
เซียร์ราลีโอน
เซเชลส์
เซเนกัล
เดนมาร์ก
เติร์กเมนิสถาน
เนปาล
เนเธอร์แลนด์
เบนิน
เบลารุส
เบลีซ
เบลเยียม
เบอร์มิวดา
เปรู
เปอร์โตริโก
เฟรนช์เกียนา
เฟรนช์เซาเทิร์นเทร์ริทอรีส์
เฟรนช์โปลินีเซีย
เมียนมาร์
เม็กซิโก
เยอรมนี
เยเมน
เรอูนียง
เลบานอน
เลโซโท
เวียดนาม
เวเนซุเอลา
เอกวาดอร์
เอธิโอเปีย
เอริเทรีย
เอลซัลวาดอร์
เอสโตเนีย
เฮติ
แกมเบีย
แคนาดา
แคเมอรูน
แซงปีแยร์และมีเกอลง
แซมเบีย
แทนซาเนีย
แองกวิลลา
แองโกลา
แอนตาร์กติกา
แอนติกาและบาร์บูดา
แอฟริกาใต้
แอลจีเรีย
แอลเบเนีย
โกตดิวัวร์
โครเอเชีย
โคลอมเบีย
โซมาเลีย
โดมินิกา
โตเกเลา
โตโก
โบลิเวีย
โปรตุเกส
โปแลนด์
โมซัมบิก
โมนาโก
โมร็อกโก
โรมาเนีย
โอมาน
ไซปรัส
ไต้หวัน
ไนจีเรีย
ไนเจอร์
ไลบีเรีย
ไอซ์แลนด์
ไอร์แลนด์
ไอล์ออฟแมน
Téléphone *
Adresse e-mail professionnelle *
Confirmez l’adresse e-mail professionnelle  *
Nombre d’employés *
1-10 พนักงาน
11-50 พนักงาน
51-200 พนักงาน
201-500 พนักงาน
501-1,000 พนักงาน
1,001-5,000 พนักงาน
5,001-10,000 พนักงาน
>10,000 พนักงาน
1000 caractères restant
*Champs obligatoires
.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); 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/ */ data.fv.disableSubmitButtons(false); /* Remove the field messages */ $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('#th-corporateGiftsContactFormConfigWrapper').find('.js-th-corporateGiftsContactFormConfig') .formValidation( { autoFocus: false, framework: 'bootstrap', icon: { valid: null, invalid: null, validating: null }, fields: { '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]*$', ''))) { messages.push('Écrivez des lettres uniquement (sans points)'); messagesEN.push('Écrivez des lettres uniquement (sans points)'); errorOccured |= true; } if (!value.trim().match(new RegExp('(?:^$)|(?:^.*[a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F]{2}.*$)|(?:^.*[^a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F. \\u3000\'\\-].*$)', ''))) { messages.push('La longueur minimum est de 2 caractères'); messagesEN.push('La longueur minimum est de 2 caractères'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, notEmpty: { message: 'Veuillez entrer votre nom.', message_en: 'Veuillez entrer votre nom.' }, stringLength: { message: 'Vous avez dépassé la longueur maximum des 40 caractères autorisés pour ce champ', 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]*$', ''))) { messages.push('Écrivez des lettres uniquement (sans points)'); messagesEN.push('Écrivez des lettres uniquement (sans points)'); errorOccured |= true; } if (!value.trim().match(new RegExp('(?:^$)|(?:^.*[a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F]{2}.*$)|(?:^.*[^a-zA-Z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02B8\\u0370-\\u03FF\\u1F00-\\u1FFF\\u0400-\\u052F\\u1C80-\\u1C8F\\u2DE0-\\u2DFF\\uA640-\\uA69F. \\u3000\'\\-].*$)', ''))) { messages.push('La longueur minimum est de 2 caractères'); messagesEN.push('La longueur minimum est de 2 caractères'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, notEmpty: { message: 'Merci d\'entrer votre nom', message_en: 'Merci d\'entrer votre nom' }, stringLength: { message: 'Vous avez dépassé la longueur maximum des 40 caractères autorisés pour ce champ', message_en: 'You have exceeded the maximum length of 40 characters for this field', max: 40 }, } }, 'values[corporateGiftsContactFormDefinition_jobTitle]': { trigger: 'blur', validators: { stringLength: { message: 'Vous avez dépassé la longueur maximum des 40 caractères autorisés pour ce champ', message_en: 'You have exceeded the maximum length of 40 characters for this field', max: 40 }, } }, 'values[corporateGiftsContactFormDefinition_companyName]': { trigger: 'blur', validators: { notEmpty: { message: 'Veuillez indiquer le nom de votre société.', message_en: 'Veuillez indiquer le nom de votre société.' }, stringLength: { message: 'Vous avez dépassé la longueur maximum des 40 caractères autorisés pour ce champ', 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}$)(?=.{0,64}@)(?:(?!^\\.)(?!.*\\.@)(?!.*\\.\\.)[a-zA-Z0-9!#.$%&\'*+\/=?^_‘{|}~-]+|\"(?:[\\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-]*$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$', ''), message: 'Veuillez indiquer votre adresse e-mail professionnelle', message_en: 'Veuillez indiquer votre adresse e-mail professionnelle' }, notEmpty: { message: 'Veuillez indiquer votre adresse e-mail professionnelle', message_en: 'Veuillez indiquer votre adresse e-mail professionnelle' }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 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}$)(?=.{0,64}@)(?:(?!^\\.)(?!.*\\.@)(?!.*\\.\\.)[a-zA-Z0-9!#.$%&\'*+\/=?^_‘{|}~-]+|\"(?:[\\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-]*$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?$', ''), message: 'Veuillez indiquer votre adresse e-mail professionnelle', message_en: 'Veuillez indiquer votre adresse e-mail professionnelle' }, notEmpty: { message: 'Veuillez indiquer votre adresse e-mail professionnelle', message_en: 'Veuillez indiquer votre adresse e-mail professionnelle' }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 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: 'Les champs ne correspondent pas.', message_en: 'The fields do not match.' } } }, 'values[corporateGiftsContactFormDefinition_country]': { trigger: 'change', validators: { notEmpty: { message: 'Veuillez entrer votre pays\/région.', message_en: 'Veuillez entrer votre pays\/région.' } } }, '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\\\\(\\\\)\\- \\\\.]*$', ''))) { messages.push('Veuillez indiquer votre numéro de téléphone. (chiffres seulement, sans espaces)'); messagesEN.push('Veuillez indiquer votre numéro de téléphone. (chiffres seulement, sans espaces)'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, notEmpty: { message: 'Veuillez indiquer votre numéro de téléphone', message_en: 'Veuillez indiquer votre numéro de téléphone' }, stringLength: { message: 'Vous avez dépassé la longueur maximum des 20 caractères autorisés pour ce champ', message_en: 'You have exceeded the maximum length of 20 characters for this field', max: 20 }, callbackPhone: { alias: 'callback', message: 'Veuillez indiquer votre numéro de téléphone', message_en: 'Veuillez indiquer votre numéro de téléphone', 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: 'Veuillez indiquer la raison pour laquelle vous nous contactez.', message_en: 'Veuillez indiquer la raison pour laquelle vous nous contactez.' }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 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); 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/ */ data.fv.disableSubmitButtons(false); /* Remove the field messages */ $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(); } };