CONTÁCTENOS
CONTÁCTENOS
¿No puede encontrar lo que está buscando en la sección Ayuda de la Tienda Online o en las preguntas frecuentes?
Contacte con el equipo Swarovski Online:
Contacte con el equipo Swarovski Online:
Customer Relations Portugal
Swarovski Ibérica S.A.
C/ Llacuna, 10-20 1ª Planta
08005 Barcelona
España
Teléfono: 800 918 668
BUSCADOR DE TIENDAS
ENCUENTRA UNA TIENDA SWAROVSKI CERCA DE TÍ
Descubre la belleza de los productos Swarovski en una de nuestras tiendas.
EQUIPO SWAROVSKI ONLINE
Si le surgen preguntas o desea información sobre la Tienda Online (p. ej., proceso de pedidos, pago, seguridad, envíos o política de devoluciones), póngase en contacto con el equipo de Swarovski Online rellenando el siguiente formulario de contacto.
ver menos
Leer más
$(this).siblings('.js-pt-shortContactFormConfig')
.formValidation({
autoFocus: false,
framework: 'bootstrap',
icon: {
valid: null,
invalid: null,
validating: null
},
fields: {
'values[shortContactFormDefinition_title]': {
trigger: 'change',
validators: {
notEmpty: {
message: 'Elija un saludo',
message_en: 'Please select a title'
}
}
},
'values[shortContactFormDefinition_firstName]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Introduzca su nombre.',
message_en: 'Please enter your first name.'
},
stringLength: {
message: 'Ha excedido la longitud máxima de 40 caracteres en este campo',
message_en: 'You have exceeded the maximum length of 40 characters for this field',
max: 40
},
}
},
'values[shortContactFormDefinition_lastName]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Por favor introduzca su apellido.',
message_en: 'Please enter your last name.'
},
stringLength: {
message: 'Ha excedido la longitud máxima de 40 caracteres en este campo',
message_en: 'You have exceeded the maximum length of 40 characters for this field',
max: 40
},
}
},
'values[shortContactFormDefinition_email]': {
trigger: 'blur',
validators: {
regexp: {
regexp: /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,
message: 'Por favor introduzca su correo electrónico.',
message_en: 'Please enter your email address.'
},
notEmpty: {
message: 'Por favor introduzca su correo electrónico.',
message_en: 'Please enter your email address.'
},
stringLength: {
message: 'Este campo debe tener entre 0 y 70 caracteres',
message_en: 'The number of characters for this field must be between 0 and 70',
min: 0
,
max: 70
},
}
},
'values[shortContactFormDefinition_phone]': {
trigger: 'blur',
validators: {
stringLength: {
message: 'Ha excedido la longitud máxima de 20 caracteres en este campo',
message_en: 'You have exceeded the maximum length of 20 characters for this field',
},
callbackPhone: {
alias: 'callback',
message: 'Complete el campo teléfono',
message_en: 'Please enter your telephone number',
callback: function (value, validator, $field) {
var matchesRegex = true;
var regexList = [];
for (var i = 0; i < regexList.length; i++) {
matchesRegex = matchesRegex && (value.match(regexList[i])[0] === value);
}
var prefixCountry = $field.siblings('.flag-container').children('.selected-flag').attr('title');
var isValidPrefix = prefixCountry !== undefined && prefixCountry !== "Unknown";
return value === '' || (matchesRegex && isValidPrefix);
}
},
}
},
'values[shortContactFormDefinition_country]': {
trigger: 'change',
validators: {
notEmpty: {
message: 'Introduzca su país\/región.',
message_en: 'Please enter your country\/region.'
}
}
},
'values[shortContactFormDefinition_subject]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Debe rellenar el campo Asunto. Gracias.',
message_en: 'Please fill in the field Subject - thank you.'
},
stringLength: {
message: 'Este campo debe tener entre 0 y 70 caracteres',
message_en: 'The number of characters for this field must be between 0 and 70',
min: 0
,
max: 70
},
}
},
'values[shortContactFormDefinition_message]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Debe rellenar el campo Asunto. Gracias.',
message_en: 'Please fill in the field Subject - thank you.'
},
stringLength: {
message: 'Este campo debe tener entre 0 y 1000 caracteres',
message_en: 'The number of characters for this field must be between 0 and 1000',
min: 0
,
max: 1000
},
}
},
'values[shortContactFormDefinition_scsMember]': {
trigger: 'change',
validators: {
}
},
'values[shortContactFormDefinition_scsMemberNumber]': {
trigger: 'blur',
validators: {
stringLength: {
message: 'Ha excedido la longitud máxima de 11 caracteres en este campo',
message_en: 'You have exceeded the maximum length of 11 characters for this field',
max: 11
},
}
},
'values[shortContactFormDefinition_beSwaMember]': {
trigger: 'change',
validators: {
}
},
'values[shortContactFormDefinition_beSwaMemberNumber]': {
trigger: 'blur',
validators: {
}
}
}
})
.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) {
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('small[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", "help-block");
$(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) {
/* Remove the field messages */
$errorContent = data.element.closest('.form-combo-molecule').find('.errors');
$errorContent.find('small[data-field="' + data.field + '"]').remove();
$errorContent.find('small[data-fv-result="INVALID"]').removeAttr("style");
})
.on('success.form.fv', function() {
var formId = 'shortContactForm';
if (!formId || formId === 'cfRequest' || formId === 'cfResponse') {
formId = 'shortContactFormDefinition';
}
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();
}
};