In order to better assist you, please select a topic
$(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: 'Please select your topic',
message_en: 'Please select your topic'
}
}
}
}
}
)
.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 */
$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
Temat
Zaznacz jeden z następujących tematów
$(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: 'Please select your subject',
message_en: 'Please select your subject'
}
}
}
}
}
)
.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 */
$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();
}
};
$(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: 'Please enter your subject',
message_en: 'Please enter your subject'
},
stringLength: {
message: 'The number of characters for this field must be between 0 and 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);
$(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 */
$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();
}
};
{"didYouKnowLabel":"Did you know:","product-size":["To know your perfect size, please use our size guide.","For more information please check <a href="/s-swarovski-ring-size/" target="_blank" rel="noopener noreferrer">Size Guide</a>"],"product-availability":["To check in-store availability, follow these steps:<br/>1. Choose your product from our online shop.<br/>2. On the product details page, next to “Add to Bag”, select “Find in-store”, then click “Click & Collect: Check Availability”.<br/>3. Enter your current or preferred location and browse the available options.","For more information please check <a href="/s-faq-order/?accordionID=CC-Overview_AE-product_availibility" target="_blank" rel="noopener noreferrer">FAQ</a>"],"product-colors":["Please use the Colour Filter in the product list page or check the colour variations on the product detail page to find the perfect match."],"promotion-info":["Swarovski runs sale promotions throughout the year, to stay up to date, we recommend signing up to our newsletter."],"promotion-extension":["Our promotions always have set validity periods and once the end date has passed, either the discount voucher codes automatically stop functioning or the standard price returns.","Orders placed before a promotion is released cannot be altered to take advantage of the newest promotion."],"promotion-quality":["Check the promotion Terms & Conditions to ensure your item qualifies and confirm your order was placed within the promotion period.","For more details, see our <a href="/s-faq-order/?accordionID=CC-Overview_AE-purchase_qualify" target="_blank" rel="noopener noreferrer">FAQ</a>"],"order-resendOrderConfirmation":["Certainly! If you like an update on your order, please visit <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">order status</a>.","If you don't know your order number, simply provide your email address, and we'll resend the order confirmation"],"order-orderStatus":["You can easily check the status of your order here <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">Order Status</a>"],"order-cancelEntire":["An order cancellation may be possible within 15 minutes (approximately) of receipt of your order confirmation.","For more information please check <a href="/s-faq-order/?accordionID=CC-Overview_AE-cancel_order_new" target="_blank" rel="noopener noreferrer">FAQ</a>"],"order-cancelPartially":["Partial cancellations aren't possible, only full order cancellations within approximately 15 minutes of confirmation. See <a href="/s-faq-order/?accordionID=CC-Overview_AE-cancel_order_new" target="_blank" rel="noopener noreferrer">FAQ</a> for details."],"order-changeBillingAddress":["We are unable to change a billing addresses."],"order-return":["You can follow the steps outlined in our <a href="/s-faq-return/?accordionID=CC-Overview_AE-how-do-I-return-my-item" target="_blank" rel="noopener noreferrer">FAQ</a> for detailed guidance."],"order-returnPolicy":["For more information on our return policy, please click here <a href="/s-faq-return/?accordionID=CC-Overview_AE-can-I-do-a-return" target="_blank" rel="noopener noreferrer">FAQ</a>"],"order-onlineRefundStatus":["Returns take around 14 working days. You'll receive a confirmation email once we get your return, and refund may take up to 10 working days to appear in your account.","For more details, see our <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-when-will-I-receive-my-refund" target="_blank" rel="noopener noreferrer">FAQ</a>"],"exchange-exchangeProduct":["Exchanges aren't possible. Please return unwanted items per our returns policy and place a new order for the correct product.","For more details, see our <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-exchange-purchase" target="_blank" rel="noopener noreferrer">FAQ</a>"],"exchange-exchangeInStore":["You can find detailed information in our <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-exchange-product" target="_blank" rel="noopener noreferrer">FAQ</a>"],"exchange-exchangeProductFromAnotherCountry":["Due to various reasons, Swarovski does not have an international exchange or refund policy. As a result, we are unable to exchange, substitute, or refund products purchased abroad."],"delivery-tracking":["You received the tracking link with your shipping confirmation. Alternatively, you can check the progress of your shipment here: <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">order status</a>."],"delivery-damagedItem":["We apologize for the inconvenience. Please contact our customer service and provide pictures of the shipping box and the damaged product and we will look into a solution for you."],"delivery-missingItem":["We’re sorry for the inconvenience. Was the shipping box tampered with? Please contact our customer service with photos of the shipping box, we will investigate it and find a solution for you."],"delivery-changeAddress":["Changing the delivery address or date may not be possible once a parcel is in transit. You can use our delivery partner's web portal to manage delivery options.","For more details, see our <a href="/s-faq-shipping/Swarovski-Shipping-FAQs/?accordionID=CC-Overview_AE-delivery_address" target="_blank" rel="noopener noreferrer">FAQ</a>"],"delivery-changeCountry":["Delivery to another country/region is not possible. Please order from the online shop of the delivery destination.","To change country/region and language, click on the country/region name in the selector menu."],"payment-electronicCard":["Electronic gift cards are entered at payment stage in the checkout. Confirm you are entering the 10 or 16-digit card number correctly. Make sure you are not entering a money-off or discount voucher code.","For more information check here <a href="/s-faq-giftcard-voucher/Swarovski-Gift-Cards-Voucher-FAQs/?accordionID=CC-Purchase-Vouchers_AE-voucher-not-working" target="_blank" rel="noopener noreferrer">FAQ</a>"],"payment-multipleElectronicGiftCards":["To pay with multiple gift cards, please follow the steps to merge gift cards at the payment stage."],"payment-payWith":["To redeem your gift card, please follow these easy steps described in our <a href="/s-faq-giftcard-voucher/Swarovski-Gift-Cards-Voucher-FAQs/?accordionID=CC-Purchase-Vouchers_AE-redeem-gift-card" target="_blank" rel="noopener noreferrer">FAQ</a>"],"payment-rejection":["Please make sure your payment and personal data are consistent.","For more information please check <a href="/s-faq-payment/Swarovski-Payment-FAQs/?accordionID=CC-Purchase-Payment_AE-methods" target="_blank" rel="noopener noreferrer">FAQ</a>"],"website-unableToCheckout":["Please check here before contacting us <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-website-issue" target="_blank" rel="noopener noreferrer">FAQ</a>"],"website-resetPassword":["Please use the "forgot your password" function.","For more information please check here <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-reset_pasword" target="_blank" rel="noopener noreferrer">FAQ</a>"],"website-unableToLogin":["Please use the "forgot your password" function.","For more information please check here <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-reset_pasword" target="_blank" rel="noopener noreferrer">FAQ</a>"],"swarovskiclub-unsubscribeNewsletter":["We send two types of emails: newsletters with promotions and collections, and membership updates (rewards, status, or program changes). To unsubscribe from newsletters, click “unsubscribe” at the email’s bottom or update your settings in “My Account” on Swarovski.com. To stop all communications, including rewards, contact Customer Service to close your account."],"swarovskiclub-emailAfterUnsubscribe":["If you’ve unsubscribed from our newsletter but remain a Swarovski Club member, you’ll still receive emails about rewards, tier status, or program changes. To stop these, contact Customer Service to close your account. You may also be subscribed to updates from one of our sub-brands."],"swarovskiclub-voucherNotWorking":["For more details, please visit our FAQ entry on how to link your club membership and use your discount voucher. <a href="/s-faq-club/?accordionID=CC-Membership-Swa-Club_AE-not-use-discount-voucher" target="_blank" rel="noopener noreferrer">FAQ</a>"],"swarovskiclub-extendedVoucher":["Bony rabatowe Swarovski Club nie podlegają przedłużeniu. Okres ważności jest wskazany w Warunkach zawartych w otrzymanym mailu z nagrodą."],"swarovskiclub-saleItem":["Bony rabatowe Swarovski Club nie mogą być wykorzystane na przecenione artykuły. Więcej szczegółów znajdziesz w Warunkach w otrzymanym mailu z nagrodą."],"swarovskiclub-birthdayGiftVoucher":["Swój prezent możesz odebrać w wybranym sklepie. Jeśli nie masz preferowanego sklepu lub nie wiesz, do którego się udać, zaloguj się na swoje konto i wskaż sklep, który Ci odpowiada. Alternatywnie skorzystaj z naszej Wyszukiwarki Sklepów, aby znaleźć placówkę oferującą program Swarovski Club. W niektórych krajach klienci mogą również odebrać prezent online podczas kolejnych zakupów internetowych."],"scsmembership-renewMembership":["Aby odnowić członkostwo, wykonaj proste kroki opisane w naszym <a href="/s-faq-scs/Swarovski-Crystal-Society-FAQs-/?accordionID=SCS-LP_FAQ_AE-how-can-I-renew-membership" target="_blank" rel="noopener noreferrer">FAQ</a>"],"scsmembership-becomeMember":["Aby dołączyć do programu, wykonaj proste kroki opisane w naszym <a href="/s-faq-scs/Swarovski-Crystal-Society-FAQs-/?accordionID=CC-Membership-SCS_AE-how-to-join-renew-online" target="_blank" rel="noopener noreferrer">FAQ</a>"],"scsmembership-membershipArrival":["Pakiety członkowskie są zazwyczaj wysyłane 4-6 tygodni po rejestracji, a nowe lub odnowione członkostwa są wysyłane pierwszego dnia następnego miesiąca. Dla członkostw 3-letnich (2. i 3. rok) pakiety są wysyłane na początku roku, dzięki czemu członkowie mogą cieszyć się corocznym prezentem i odkrywać nowości."],"warranty-itemCoveredByWarrant":["Swarovski oferuje pełną gwarancję na wady produkcyjne i materiałowe na produkty zakupione w oficjalnych sklepach lub u autoryzowanych sprzedawców.","Więcej szczegółów na temat naszej polityki gwarancyjnej znajdziesz w naszych <a href="/s-faq-warranty/?accordionID=CC-Products-Warranty_AE-policy" target="_blank" rel="noopener noreferrer">FAQ</a>."],"warranty-warrantyPolicy":["Wszystkie informacje dotyczące naszej polityki gwarancyjnej znajdziesz w odpowiedniej sekcji <a href="/s-faq-warranty/?accordionID=CC-Products-Warranty_AE-policy" target="_blank" rel="noopener noreferrer">FAQ</a>."],"repair-repairableItem":["Aby uzyskać więcej informacji, przynieś swój produkt oraz dowód zakupu do najbliższego sklepu Swarovski w celu oceny.","Najbliższy sklep możesz znaleźć, korzystając z naszego <a href="/store-finder/?features=repairService" target="_blank" rel="noopener noreferrer">Lokalizatora sklepów</a>."],"repair-status":["Możesz łatwo sprawdzić status swojej naprawy tutaj <a href="/s-faq-repairs/Swarovski-Repair-Replacement-FAQs/?accordionID=CheckRepairStatusThemedAccordionEntryComponent" target="_blank" rel="noopener noreferrer">Wyświetl status naprawy</a>."],"repair-cost":["Przynieś swój produkt oraz dowód zakupu do najbliższego sklepu Swarovski w celu oceny.","Najbliższy sklep możesz znaleźć, korzystając z naszego <a href="/store-finder/?features=repairService" target="_blank" rel="noopener noreferrer">Lokalizatora sklepów</a>."],"repair-visitStore":["Należy udać się do sklepu, ponieważ tylko autoryzowane sklepy dysponują odpowiednimi narzędziami do oceny i naprawy produktu."]}
3
Formy kontaktu
Wybierz preferowaną formę kontaktu
Email
Estimated waiting time:
1- 3 business days
W razie pytań lub wątpliwości skontaktuj się z nami, korzystając z poniższego formularza. Z przyjemnością udzielimy Ci pomocy.
$(this).closest('#pl-contactEmailFormConfigWrapper').find('.js-pl-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('Please enter letters only (no full stops)');
messagesEN.push('Please enter letters only (no full stops)');
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('Minimum length is 2 characters');
messagesEN.push('Minimum length is 2 characters');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
notEmpty: {
message: 'Please enter your first name.',
message_en: 'Please enter your first name.'
},
stringLength: {
message: 'You have exceeded the maximum length of 40 characters for this field',
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('Please enter letters only (no full stops)');
messagesEN.push('Please enter letters only (no full stops)');
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('Minimum length is 2 characters');
messagesEN.push('Minimum length is 2 characters');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
notEmpty: {
message: 'Please enter your last name.',
message_en: 'Please enter your last name.'
},
stringLength: {
message: 'You have exceeded the maximum length of 40 characters for this field',
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('please enter your phone number. (Numbers only, no spaces)');
messagesEN.push('please enter your phone number. (Numbers only, no spaces)');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
stringLength: {
message: 'You have exceeded the maximum length of 20 characters for this field',
message_en: 'You have exceeded the maximum length of 20 characters for this field',
max: 20
},
callbackPhone: {
alias: 'callback',
message: 'Please enter your telephone number',
message_en: 'Please enter your telephone number',
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: 'Please enter your email address.',
message_en: 'Please enter your email address.'
},
notEmpty: {
message: 'Please enter your email address.',
message_en: 'Please enter your email address.'
},
stringLength: {
message: 'The number of characters for this field must be between 0 and 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: 'Please enter your country\/region.',
message_en: 'Please enter your country\/region.'
}
}
},
'values[contactEmailFormDefinition_swaClubMember]': {
trigger: 'change',
validators: {
}
},
'values[contactEmailFormDefinition_scsMember]': {
trigger: 'change',
validators: {
}
},
'values[contactEmailFormDefinition_scsMemberNumber]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Please enter your SCS Membership number',
message_en: 'Please enter your SCS Membership number'
},
stringLength: {
message: 'The number of characters for this field must be between 0 and 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: 'Please enter a message',
message_en: 'Please enter a message'
},
stringLength: {
message: 'The number of characters for this field must be between 0 and 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: 'The number of characters for this field must be between 0 and 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: 'The number of characters for this field must be between 0 and 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: 'Please select your topic',
message_en: 'Please select your topic'
}
}
},
'values[contactEmailFormDefinition_contactSubject]': {
trigger: 'change',
validators: {
notEmpty: {
message: 'Please select your subject',
message_en: 'Please select your subject'
}
}
},
'values[contactEmailFormDefinition_contactSubjectTxt]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'Please enter your subject',
message_en: 'Please enter your subject'
},
stringLength: {
message: 'The number of characters for this field must be between 0 and 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);
$(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 */
$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();
}
};