Livraison standard gratuite pour
une commande supérieure à 75 EUR

Contactez-nous

1

Catégorie

Afin de mieux vous assister, veuillez choisir un sujet

Veuillez sélectionner votre sujet/catégorie *
Information produit
Promotions
Commandes en ligne
Échange
Livraison
Paiement
Problème sur le site Internet
Swarovski Club
Adhésion SCS
Garantie
Réparation
Autre
$(this).closest('#contactTopicFormConfigWrapper').find('.js-contactTopicFormConfig') .formValidation( { autoFocus: false, framework: 'bootstrap', icon: { valid: null, invalid: null, validating: null }, fields: { 'values[contactTopicFormDefinition_contactTopic]': { trigger: 'change', validators: { notEmpty: { message: 'Veuillez sélectionner votre sujet\/catégorie', message_en: 'Veuillez sélectionner votre sujet\/catégorie' } } } } } ) .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 = 'ShortContactTopic'; if (!formId || formId === 'cfRequest' || formId === 'cfResponse') { formId = 'contactTopicFormDefinition'; } 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(); } };
2

Sujet

Sélectionnez l’un des sujets suivants

Veuillez sélectionner votre sujet/catégorie *
Quel est le lien de suivi de ma commande?
Un article de ma commande est arrivé endommagé
Un article de ma commande n’est pas arrivé
Pouvez-vous modifier mon adresse de livraison?
Puis-je envoyer ma commande à un autre pays?
Autre
Comment puis-je renouveler mon adhésion?
Comment puis-je devenir un membre de la SCS?
Quand vais-je recevoir mon pack d’adhésion?
Autre
Mon article est-il réparable?
Quel est le statut de la réparation de mon article?
Combien coûte une réparation?
Pourquoi dois-je me rendre en boutique pour faire réparer un article?
Autre
Pouvez-vous me donner des informations sur la taille du produit?
Où ce produit est-il disponible?
Quelles sont les couleurs disponibles?
Autre
Mon adresse postale n’est pas reconnue comme adresse valide
Je ne peux pas terminer ma commande
Pouvez-vous réinitialiser le mot de passe de mon compte?
Je ne peux pas me connecter à mon compte
Autre
Autre
Comment puis-je me désinscrire de la newsletter Swarovski Club?
Pourquoi est-ce que je reçois toujours des e-mails de Swarovski alors que je me suis désinscrit(e) de la newsletter?
Mon bon cadeau Swarovski Club ne fonctionne pas
Mon bon de réduction Swarovski Club peut-il être prolongé?
Mon bon de réduction Swarovski Club peut-il être utilisé pour des produits soldés?
Comment puis-je utiliser mon bon cadeau anniversaire?
Autre
Mon produit est-il couvert par la garantie?
Quelle est votre politique de garantie?
Autre
Puis-je échanger un produit de ma commande en ligne?
Puis-je échanger un produit acheté en boutique dans un autre pays?
Puis-je échanger en boutique la commande que j’ai passée en ligne?
Autre
Pourquoi ma carte cadeau électronique n’est pas acceptée en ligne?
Puis-je utiliser plus d’1 carte cadeaux électronique comme moyen de paiement?
Comment puis-je payer un achat en ligne avec une carte cadeau électronique?
Pourquoi mon paiement a-t-il été refusé?
Pourquoi mon paiement a-t-il été remboursé?
Autre
Pouvez-vous fournir des informations sur la promotion en cours?
Pouvez-vous prolonger la promotion?
Pourquoi mon achat ne remplit-il pas les conditions pour la promotion?
Autre
Pouvez-vous me renvoyer la confirmation de ma commande?
Quel est le statut de ma commande en ligne?
Puis-je annuler l’intégralité de ma commande en ligne?
Puis-je annuler une partie de ma commande en ligne?
Pouvez-vous changer mon adresse de facturation?
Comment puis-je retourner ma commande en ligne?
Quelle est votre politique de retour des achats en ligne?
Quel est le statut du remboursement de ma commande en ligne?
Autre
$(this).closest('#contactSubjectFormConfigWrapper').find('.js-contactSubjectFormConfig') .formValidation( { autoFocus: false, framework: 'bootstrap', icon: { valid: null, invalid: null, validating: null }, fields: { 'values[contactSubjectFormDefinition_contactSubject]': { trigger: 'change', validators: { notEmpty: { message: 'Veuillez sélectionner votre sujet\/catégorie', message_en: 'Veuillez sélectionner votre sujet\/catégorie' } } } } } ) .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 = 'ShortContactSubject'; if (!formId || formId === 'cfRequest' || formId === 'cfResponse') { formId = 'contactSubjectFormDefinition'; } 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(); } };
Sujet *
$(this).closest('#contactSubjectOtherFormConfigWrapper').find('.js-contactSubjectOtherFormConfig') .formValidation( { autoFocus: false, framework: 'bootstrap', icon: { valid: null, invalid: null, validating: null }, fields: { 'values[contactSubjectOtherFormDefinition_contactSubjectTxt]': { trigger: 'keyup', validators: { notEmpty: { message: 'Veuillez saisir l’objet du message', message_en: 'Veuillez saisir l’objet du message' }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 40', message_en: 'The number of characters for this field must be between 0 and 40', min: 0 , max: 40 }, } } } } ) .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 = 'contactSubjectOther'; if (!formId || formId === 'cfRequest' || formId === 'cfResponse') { formId = 'contactSubjectOtherFormDefinition'; } 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(); } };
3

Options de contact

Choisissez votre moyen de contact préféré

E-mail

Temps d’attente estimé: 1 à 3 jours ouvrables

Pour toute question ou information, n’hésitez pas à nous contacter à l’aide du formulaire ci-dessous. Nous serons ravis de vous aider.

Prénom *
Nom *
Téléphone
E-mail *
Pays *
Afghanistan
Afrique du Sud
Albanie
Algérie
Allemagne
Andorre
Angola
Anguilla
Antarctique
Antigua-et-Barbuda
Arabie saoudite
Argentine
Arménie
Aruba
Australie
Autriche
Azerbaïdjan
Bahamas
Bahreïn
Bangladesh
Barbade
Belgique
Belize
Bermudes
Bhoutan
Biélorussie
Bolivie
Bonaire, Saint-Eustache et Saba
Bosnie-Herzégovine
Botswana
Brunei Darussalam
Brésil
Bulgarie
Burkina Faso
Burundi
Bénin
Cambodge
Cameroun
Canada
Cap-Vert
Chili
Chine continentale
Chypre
Colombie
Comores
Congo
Congo, République démocratique du
Corée, République de
Corée, République populaire démocratique de
Costa Rica
Croatie
Cuba
Curaçao
Côte d’Ivoire
Danemark
Djibouti
Dominique
Espagne
Estonie
Fidji
Finlande
France
Gabon
Gambie
Ghana
Gibraltar
Grenade
Groenland
Grèce
Guadeloupe
Guam
Guatemala
Guernesey
Guinée
Guinée Équatoriale
Guinée-Bissau
Guyana
Guyane
Géorgie
Géorgie du Sud et îles Sandwich du Sud
Haïti
Honduras
Hong Kong, RAS
Hongrie
Inde
Indonésie
Irak
Iran
Irlande
Islande
Israël
Italie
Jamaïque
Japon
Jersey
Jordanie
Kazakhstan
Kenya
Kirghizistan
Kiribati
Koweït
Lesotho
Lettonie
Liban
Liberia
Liechtenstein
Lituanie
Luxembourg
Macao, RAS
Macédoine
Madagascar
Malaisie
Malawi
Maldives
Mali
Malte
Maroc
Martinique
Mauritanie
Mayotte
Mexique
Micronésie, États fédérés de
Moldavie
Monaco
Mongolie
Montserrat
Monténégro
Mozambique
Myanmar
Namibie
Nauru
Nicaragua
Niger
Nigeria
Niue
Norvège
Nouvelle-Calédonie
Nouvelle-Zélande
Népal
Oman
Ouganda
Ouzbékistan
Pakistan
Palaos
Panama
Papouasie-Nouvelle-Guinée
Paraguay
Pays-Bas
Philippines
Pitcairn
Pologne
Polynésie française
Porto Rico
Portugal
Pérou
Qatar
Roumanie
Royaume-Uni
Rwanda
Région de Taïwan
République arabe syrienne
République centrafricaine
République dominicaine
République démocratique populaire lao
République libyenne arabe
République tchèque
Réunion
Sahara occidental
Saint Barthélemy
Saint-Christophe-et-Niévès
Saint-Marin
Saint-Martin (partie française)
Saint-Martin (partie néerlandaise)
Saint-Pierre-et-Miquelon
Saint-Siège (État de la Cité du Vatican)
Saint-Vincent et les Grenadines
Sainte-Hélène, Ascension et Tristan da Cunha
Sainte-Lucie
Salvador
Samoa
Samoa américaines
Sao Tomé-et-Principe
Serbie
Seychelles
Sierra Leone
Singapour
Slovaquie
Slovénie
Somalie
Soudan
Sri Lanka
Suisse
Suriname
Suède
Svalbard et Jan Mayen
Swaziland
Sénégal
Tadjikistan
Tanzanie
Tchad
Terres australes françaises
Territoire britannique de l’océan Indien
Territoire palestinien
Thaïlande
Timor oriental
Togo
Tokelaou
Tonga
Trinité-et-Tobago
Tunisie
Turkménistan
Turquie
Tuvalu
Ukraine
Uruguay
Vanuatu
Venezuela
Vietnam
Wallis-et-Futuna
Yémen
Zambie
Zimbabwe
Égypte
Émirats arabes unis
Équateur
Érythrée
États-Unis
Éthiopie
Île Christmas
Île Maurice
Île Norfolk
Île de Bouvet
Île de Man
Îles Caïmans
Îles Cocos (Keeling)
Îles Cook
Îles Féroé
Îles Heard-et-MacDonald
Îles Malouines
Îles Mariannes du Nord
Îles Marshall
Îles Salomon
Îles Turques-et-Caïques
Îles Vierges britanniques
Îles Vierges des États-Unis
Îles mineures éloignées des États-Unis
Îles Åland
Numéro de commande
Numéro de réparation 
Sujet *
Etes vous membre du programme de fidélité Swarovski Club ?
Etes-vous membre de la Swarovski Crystal Society (SCS) ?
Numéro de membre *
1000 caractères restant
Veuillez sélectionner votre sujet/catégorie *
Information produit
Promotions
Commandes en ligne
Échange
Livraison
Paiement
Problème sur le site Internet
Swarovski Club
Adhésion SCS
Garantie
Réparation
Autre
Veuillez sélectionner votre sujet/catégorie *
Quel est le lien de suivi de ma commande?
Un article de ma commande est arrivé endommagé
Un article de ma commande n’est pas arrivé
Pouvez-vous modifier mon adresse de livraison?
Puis-je envoyer ma commande à un autre pays?
Autre
Comment puis-je renouveler mon adhésion?
Comment puis-je devenir un membre de la SCS?
Quand vais-je recevoir mon pack d’adhésion?
Autre
Mon article est-il réparable?
Quel est le statut de la réparation de mon article?
Combien coûte une réparation?
Pourquoi dois-je me rendre en boutique pour faire réparer un article?
Autre
Pouvez-vous me donner des informations sur la taille du produit?
Où ce produit est-il disponible?
Quelles sont les couleurs disponibles?
Autre
Mon adresse postale n’est pas reconnue comme adresse valide
Je ne peux pas terminer ma commande
Pouvez-vous réinitialiser le mot de passe de mon compte?
Je ne peux pas me connecter à mon compte
Autre
Autre
Comment puis-je me désinscrire de la newsletter Swarovski Club?
Pourquoi est-ce que je reçois toujours des e-mails de Swarovski alors que je me suis désinscrit(e) de la newsletter?
Mon bon cadeau Swarovski Club ne fonctionne pas
Mon bon de réduction Swarovski Club peut-il être prolongé?
Mon bon de réduction Swarovski Club peut-il être utilisé pour des produits soldés?
Comment puis-je utiliser mon bon cadeau anniversaire?
Autre
Mon produit est-il couvert par la garantie?
Quelle est votre politique de garantie?
Autre
Puis-je échanger un produit de ma commande en ligne?
Puis-je échanger un produit acheté en boutique dans un autre pays?
Puis-je échanger en boutique la commande que j’ai passée en ligne?
Autre
Pourquoi ma carte cadeau électronique n’est pas acceptée en ligne?
Puis-je utiliser plus d’1 carte cadeaux électronique comme moyen de paiement?
Comment puis-je payer un achat en ligne avec une carte cadeau électronique?
Pourquoi mon paiement a-t-il été refusé?
Pourquoi mon paiement a-t-il été remboursé?
Autre
Pouvez-vous fournir des informations sur la promotion en cours?
Pouvez-vous prolonger la promotion?
Pourquoi mon achat ne remplit-il pas les conditions pour la promotion?
Autre
Pouvez-vous me renvoyer la confirmation de ma commande?
Quel est le statut de ma commande en ligne?
Puis-je annuler l’intégralité de ma commande en ligne?
Puis-je annuler une partie de ma commande en ligne?
Pouvez-vous changer mon adresse de facturation?
Comment puis-je retourner ma commande en ligne?
Quelle est votre politique de retour des achats en ligne?
Quel est le statut du remboursement de ma commande en ligne?
Autre
*Champs obligatoires
$(this).closest('#lu-contactEmailFormConfigWrapper').find('.js-lu-contactEmailFormConfig') .formValidation( { autoFocus: false, framework: 'bootstrap', icon: { valid: null, invalid: null, validating: null }, fields: { 'values[contactEmailFormDefinition_title]': { trigger: 'change', validators: { } }, 'values[contactEmailFormDefinition_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[contactEmailFormDefinition_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[contactEmailFormDefinition_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; } } }, 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[contactEmailFormDefinition_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 entrer votre adresse mail.', message_en: 'Veuillez entrer votre adresse mail.' }, notEmpty: { message: 'Veuillez entrer votre adresse mail.', message_en: 'Veuillez entrer votre adresse mail.' }, 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[contactEmailFormDefinition_country]': { trigger: 'change', validators: { notEmpty: { message: 'Veuillez entrer votre pays\/région.', message_en: 'Veuillez entrer votre pays\/région.' } } }, 'values[contactEmailFormDefinition_swaClubMember]': { trigger: 'change', validators: { } }, 'values[contactEmailFormDefinition_scsMember]': { trigger: 'change', validators: { } }, 'values[contactEmailFormDefinition_scsMemberNumber]': { trigger: 'blur', validators: { notEmpty: { message: 'Veuillez indiquer votre numéro d’adhésion SCS', message_en: 'Veuillez indiquer votre numéro d’adhésion SCS' }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 11', message_en: 'The number of characters for this field must be between 0 and 11', min: 0 , max: 11 }, } }, 'values[contactEmailFormDefinition_message]': { trigger: 'blur', validators: { notEmpty: { message: 'Veuillez saisir un message', message_en: 'Veuillez saisir un message' }, 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 }, } }, 'values[contactEmailFormDefinition_contactOrderNo]': { 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('^([a-zA-Z0-9]{15})$|^$', ''))) { messages.push('Please enter a valid order number (15 digits)'); messagesEN.push('Please enter a valid order number (15 digits)'); errorOccured |= true; } if (errorOccured) { return { valid: false, message: messages.join('<br/>'), message_en: messagesEN } } else { return true; } } }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 40', message_en: 'The number of characters for this field must be between 0 and 40', min: 0 , max: 40 }, } }, 'values[contactEmailFormDefinition_contactRepairNo]': { trigger: 'blur', validators: { stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 40', message_en: 'The number of characters for this field must be between 0 and 40', min: 0 , max: 40 }, } }, 'values[contactEmailFormDefinition_contactTopic]': { trigger: 'change', validators: { notEmpty: { message: 'Veuillez sélectionner votre sujet\/catégorie', message_en: 'Veuillez sélectionner votre sujet\/catégorie' } } }, 'values[contactEmailFormDefinition_contactSubject]': { trigger: 'change', validators: { notEmpty: { message: 'Veuillez sélectionner votre sujet\/catégorie', message_en: 'Veuillez sélectionner votre sujet\/catégorie' } } }, 'values[contactEmailFormDefinition_contactSubjectTxt]': { trigger: 'blur', validators: { notEmpty: { message: 'Veuillez saisir l’objet du message', message_en: 'Veuillez saisir l’objet du message' }, stringLength: { message: 'Le nombre de caractères de ce champ doit être compris entre 0 et 40', message_en: 'The number of characters for this field must be between 0 and 40', min: 0 , max: 40 }, } } } } ) .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 = 'contactEmail'; if (!formId || formId === 'cfRequest' || formId === 'cfResponse') { formId = 'contactEmailFormDefinition'; } 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(); } };