$(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: 'โปรดเลือกหัวข้อของคุณ',
message_en: 'โปรดเลือกหัวข้อของคุณ'
}
}
}
}
}
)
.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
Predmet
Izberite eno od naslednjih področij.
$(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: 'โปรดเลือกหัวข้อของคุณ',
message_en: 'โปรดเลือกหัวข้อของคุณ'
}
}
}
}
}
)
.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: 'ใส่หัวข้อที่คุณต้องการ',
message_en: 'ใส่หัวข้อที่คุณต้องการ'
},
stringLength: {
message: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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":"คุณทราบหรือไม่:","product-size":["หากต้องการทราบขนาดที่เหมาะสม กรุณาใช้คู่มือขนาดของเรา","สำหรับข้อมูลเพิ่มเติม กรุณาตรวจสอบที่ <a href="/s-swarovski-ring-size/" target="_blank" rel="noopener noreferrer">คู่มือขนาด</a>"],"product-availability":["คุณสามารถตรวจสอบความพร้อมของสินค้าในร้าน โปรดทำตามขั้นตอนเหล่านี้: <br/>1. เลือกสินค้าของคุณจากร้านค้าออนไลน์ของเรา <br/>2. ในหน้ารายละเอียดสินค้า ถัดจาก “เพิ่มในถุง” ให้เลือก “ค้นหาในร้าน” จากนั้นคลิก Click & Collect: ตรวจสอบความพร้อม <br/>3. ป้อนตำแหน่งปัจจุบันหรือที่ต้องการของคุณและเรียกดูตัวเลือกที่มีอยู่","สำหรับข้อมูลเพิ่มเติม โปรดตรวจสอบที่ <a href="/s-faq-order/?accordionID=CC-Overview_AE-product_availibility" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a>"],"product-colors":["ใช้ตัวกรองสีในหน้ารายการสินค้า หรือตรวจสอบตัวเลือกสีในหน้ารายละเอียดสินค้าเพื่อค้นหาสีที่ตรงใจ"],"promotion-info":["Swarovski มีโปรโมชั่นลดราคาตลอดทั้งปี เพื่อให้คุณไม่พลาดข่าวสาร เราขอแนะนำให้สมัครรับจดหมายข่าวของเรา"],"promotion-extension":["โปรโมชั่นของเรามีระยะเวลาที่กำหนดไว้เสมอ และเมื่อสิ้นสุดระยะเวลา รหัสส่วนลดจะหยุดทำงานโดยอัตโนมัติหรือราคาจะกลับมาเป็นราคาปกติ คำสั่งซื้อที่ทำก่อนการเปิดตัวโปรโมชั่นไม่สามารถแก้ไขเพื่อใช้ประโยชน์จากโปรโมชั่นใหม่ได้"],"promotion-quality":["โปรดตรวจสอบ ข้อกำหนดและเงื่อนไข ของโปรโมชั่นเพื่อให้แน่ใจว่าสินค้าของคุณมีคุณสมบัติตรงตามที่กำหนด และยืนยันว่าคุณสั่งซื้อภายในระยะเวลาโปรโมชั่น","สำหรับข้อมูลเพิ่มเติม โปรดตรวจสอบที่ <a href="/s-faq-order/?accordionID=CC-Overview_AE-purchase_qualify" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a>"],"order-resendOrderConfirmation":["แน่นอน! หากคุณต้องการอัปเดตคำสั่งซื้อของคุณ โปรดไปที่ <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">สถานะคำสั่งซื้อ</a> หากคุณไม่ทราบหมายเลขคำสั่งซื้อของคุณ เพียงแค่ระบุที่อยู่อีเมลของคุณ แล้วเราจะส่งคำยืนยันคำสั่งซื้อให้คุณอีกครั้ง"],"order-orderStatus":["คุณสามารถตรวจสอบสถานะคำสั่งซื้อของคุณได้ง่ายๆ ที่นี่ <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">สถานะคำสั่งซื้อ</a>."],"order-cancelEntire":["คุณสามารถยกเลิกคำสั่งซื้อได้ภายในประมาณ 15 นาทีหลังจากได้รับการยืนยันคำสั่งซื้อ","สำหรับข้อมูลเพิ่มเติม กรุณาตรวจสอบที่ <a href="/s-faq-order/?accordionID=CC-Overview_AE-cancel_order_new" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a>"],"order-cancelPartially":["การยกเลิกบางส่วนไม่สามารถทำได้ คุณสามารถยกเลิกคำสั่งซื้อได้ทั้งหมดภายในเวลาประมาณ 15 นาทีหลังการยืนยัน","โปรดดู <a href="/s-faq-order/?accordionID=CC-Overview_AE-cancel_order_new" target="_blank" rel="noopener noreferrer">FAQ</a> สำหรับรายละเอียด"],"order-changeBillingAddress":["เราไม่สามารถเปลี่ยนที่อยู่สำหรับการเรียกเก็บเงินได้"],"order-return":["คุณสามารถทำตามขั้นตอนที่ระบุไว้ใน <a href="/s-faq-return/?accordionID=CC-Overview_AE-how-do-I-return-my-item" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a> ของเราเพื่อรับคำแนะนำอย่างละเอียด"],"order-returnPolicy":["สำหรับข้อมูลเพิ่มเติมเกี่ยวกับนโยบายการคืนสินค้าของเรา คลิกที่นี่ <a href="/s-faq-return/?accordionID=CC-Overview_AE-can-I-do-a-return" target="_blank" rel="noopener noreferrer">FAQ</a>"],"order-onlineRefundStatus":["การคืนสินค้าจะใช้เวลาประมาณ 14 วันทำการ คุณจะได้รับอีเมลยืนยันเมื่อเราได้รับสินค้าคืนแล้ว และการคืนเงินอาจใช้เวลาถึง 10 วันทำการในการปรากฏในบัญชีของคุณ","สำหรับข้อมูลเพิ่มเติม โปรดดูที่ <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-when-will-I-receive-my-refund" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a>."],"exchange-exchangeProduct":["คุณไม่สามารถเปลี่ยนสินค้าได้ โปรดส่งคืนสินค้าที่ไม่ต้องการตามนโยบายการคืนสินค้าของเราและสั่งซื้อใหม่สำหรับสินค้าที่ถูกต้อง","สำหรับข้อมูลเพิ่มเติม โปรดดูที่ <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-exchange-purchase" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a>"],"exchange-exchangeInStore":["คุณสามารถค้นหาข้อมูลโดยละเอียดได้ใน <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-exchange-product" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a> ของเรา"],"exchange-exchangeProductFromAnotherCountry":["เนื่องจากเหตุผลหลายประการ Swarovski ไม่มีนโยบายการแลกเปลี่ยนหรือคืนสินค้าระหว่างประเทศ ดังนั้นเราจึงไม่สามารถแลกเปลี่ยน ทดแทน หรือคืนเงินสำหรับสินค้าที่ซื้อจากต่างประเทศได้"],"delivery-tracking":["คุณได้รับลิงก์ติดตามพร้อมการยืนยันการจัดส่งของคุณ หรือคุณสามารถตรวจสอบความคืบหน้าของการจัดส่งได้ที่นี่: <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">order status</a>."],"delivery-damagedItem":["เราขออภัยในความไม่สะดวก โปรดติดต่อฝ่ายบริการลูกค้าของเราและส่งรูปภาพของกล่องจัดส่งและสินค้าที่เสียหายมาให้เรา เจ้าหน้าที่ของเรายินดีช่วยเหลือ"],"delivery-missingItem":["เราขออภัยในความไม่สะดวก กล่องจัดส่งถูกแกะหรือไม่? โปรดติดต่อฝ่ายบริการลูกค้าของเราพร้อมรูปภาพของกล่องจัดส่ง เจ้าหน้าที่ของเรายินดีช่วยเหลือ"],"delivery-changeAddress":["การเปลี่ยนแปลงที่อยู่หรือวันที่จัดส่งอาจจะไม่สามารถทำได้เมื่อพัสดุอยู่ระหว่างการขนส่ง คุณสามารถติดต่อบริษัทขนส่งของเราเพื่อจัดการตัวเลือกการจัดส่ง","สำหรับข้อมูลเพิ่มเติม โปรดดูที่ <a href="/s-faq-shipping/Swarovski-Shipping-FAQs/?accordionID=CC-Overview_AE-delivery_address" target="_blank" rel="noopener noreferrer">คำถามที่พบบ่อย</a>"],"delivery-changeCountry":["ไม่สามารถจัดส่งไปยังประเทศ/ภูมิภาคอื่นได้ โปรดสั่งซื้อจากร้านค้าออนไลน์ของปลายทางการจัดส่ง ในการเปลี่ยนประเทศ/ภูมิภาคและภาษา ให้คลิกที่ชื่อประเทศ/ภูมิภาคในเมนูตัวเลือก"],"payment-electronicCard":["บัตรของขวัญอิเล็กทรอนิกส์จะถูกป้อนในขั้นตอนการชำระเงินที่จุดชำระเงิน โปรดยืนยันว่าคุณป้อนหมายเลขบัตร 10 หรือ 16 หลักอย่างถูกต้อง ตรวจสอบให้แน่ใจว่าคุณไม่ได้ป้อนรหัสส่วนลดหรือรหัสคูปองส่วนลด สำหรับข้อมูลเพิ่มเติม","โปรดตรวจสอบที่นี่ <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":["ในการชำระเงินด้วยบัตรของขวัญหลายใบ โปรดทำตามขั้นตอนเพื่อรวมบัตรของขวัญในขั้นตอนการชำระเงิน"],"payment-payWith":["ในการแลกบัตรของขวัญของคุณ โปรดทำตามขั้นตอนง่าย ๆ ที่อธิบายไว้ใน <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":["โปรดตรวจสอบให้แน่ใจว่าข้อมูลการชำระเงินและข้อมูลส่วนตัวของคุณสอดคล้องกัน สำหรับข้อมูลเพิ่มเติมโปรดตรวจสอบ <a href="/s-faq-payment/Swarovski-Payment-FAQs/?accordionID=CC-Purchase-Payment_AE-methods" target="_blank" rel="noopener noreferrer">FAQ</a>"],"website-unableToCheckout":["โปรดตรวจสอบที่นี่ก่อนติดต่อเรา <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-website-issue" target="_blank" rel="noopener noreferrer">ปัญหาเว็บไซต์ FAQ</a>"],"website-resetPassword":["โปรดใช้ฟังก์ชัน "ลืมรหัสผ่าน".","สำหรับข้อมูลเพิ่มเติมตรวจสอบได้ที่นี่ <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-reset_pasword" target="_blank" rel="noopener noreferrer">FAQ</a>"],"website-unableToLogin":["โปรดใช้ฟังก์ชัน "ลืมรหัสผ่าน".","สำหรับข้อมูลเพิ่มเติมตรวจสอบได้ที่นี่ <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-reset_pasword" target="_blank" rel="noopener noreferrer">FAQ</a>"],"swarovskiclub-unsubscribeNewsletter":["Pošiljamo dve vrsti e-pošte: novice s promocijami in zbirkami ter posodobitve članstva (nagrade, status ali spremembe programa). Če se želite odjaviti od prejemanja novic, kliknite »odjava« na dnu e-pošte ali posodobite svoje nastavitve v razdelku »Moj račun« na Swarovski.com. Če želite ustaviti vso komunikacijo, vključno z nagradami, se obrnite na službo za stranke, da zaprete svoj račun."],"swarovskiclub-emailAfterUnsubscribe":["Če ste se odjavili od našega e-novica, vendar ostajate član Swarovski Cluba, boste še vedno prejemali e-pošto o nagradah, statusu nivoja ali spremembah programa. Če želite to ustaviti, se obrnite na službo za stranke in zaprite svoj račun. Morda ste naročeni tudi na posodobitve ene od naših podznamk."],"swarovskiclub-voucherNotWorking":["Za več podrobnosti obiščite našo FAQ stran o tem, kako povezati svoje članstvo v klubu in uporabiti svoj popustni kupon <a href="/s-faq-club/?accordionID=CC-Membership-Swa-Club_AE-not-use-discount-voucher" target="_blank" rel="noopener noreferrer">FAQ</a>."],"swarovskiclub-extendedVoucher":["Popustni boni Swarovski Cluba se ne morejo podaljšati. Obdobje veljavnosti je določeno v Pogojih in določilih, vključenih v e-pošti z nagrado, ki ste jo prejeli."],"swarovskiclub-saleItem":["Popustni boni Swarovski Cluba ni mogoče uporabiti za znižane izdelke. Za več podrobnosti si oglejte Pogoje in določila v nagradni e-pošti, ki ste jo prejeli."],"swarovskiclub-birthdayGiftVoucher":["Darilo lahko prevzamete v svoji priljubljeni trgovini. Če je nimate ali niste prepričani, katero obiskati, se lahko prijavite v svoj račun in izberete priljubljeno trgovino. Lahko pa uporabite tudi naš Iskalnik Trgovin, da najdete trgovino, ki ponuja Swarovski Club. Stranke na nekaterih trgih lahko darilo unovčijo prek spleta pri naslednjem spletnem nakupu."],"scsmembership-renewMembership":["Za obnovitev članstva sledite tem preprostim korakom, opisanim v naši <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":["Če želite postati nov član, sledite tem preprostim korakom, opisanim v naši <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":["Članski paketi se običajno pošljejo 4-6 tednov po prijavi, nove ali obnovljene članarine pa se pošljejo prvi dan naslednjega meseca. Za 3-letne članarine (2. in 3. leto) se paketi pošljejo zgodaj v letu, kar članom omogoča, da uživajo v letnem darilu in raziskujejo nove novosti."],"warranty-itemCoveredByWarrant":["Swarovski zagotavlja polno garancijo za proizvodne in materialne napake pri izdelkih, kupljenih v uradnih trgovinah ali pri pooblaščenih prodajalcih.","Za podrobnosti o naši garancijski politiki si oglejte <a href="/s-faq-warranty/?accordionID=CC-Products-Warranty_AE-policy" target="_blank" rel="noopener noreferrer">Pogosta vprašanja</a>."],"warranty-warrantyPolicy":["Za popoln pregled naše garancijske politike obiščite našo namensko rubriko <a href="/s-faq-warranty/?accordionID=CC-Products-Warranty_AE-policy" target="_blank" rel="noopener noreferrer">Pogosta vprašanja</a>."],"repair-repairableItem":["Če želite izvedeti, prinesite svoj izdelek in dokazilo o nakupu v najbližjo trgovino Swarovski na oceno.","Najbližjo trgovino lahko najdete s pomočjo našega spletnega <a href="/store-finder/?features=repairService" target="_blank" rel="noopener noreferrer">Iskalnika Trgovin</a>."],"repair-status":["Status popravila lahko enostavno preverite tukaj <a href="/s-faq-repairs/Swarovski-Repair-Replacement-FAQs/?accordionID=CheckRepairStatusThemedAccordionEntryComponent" target="_blank" rel="noopener noreferrer">Ogled statusa popravila</a>"],"repair-cost":["Prinesite svoj izdelek in dokazilo o nakupu v najbližjo trgovino Swarovski na oceno.","Najbližjo trgovino lahko najdete s pomočjo našega spletnega <a href="/store-finder/?features=repairService" target="_blank" rel="noopener noreferrer">Iskalnika Trgovin</a>."],"repair-visitStore":["Obiščite trgovino, ker so samo pooblaščene trgovine opremljene za pravilno ocenjevanje in popravilo izdelka."]}
3
Možnosti stika
Izberite želeno možnost stika
อีเมล
เวลารอคอยโดยประมาณ:
1 - 3 วันทำการ
Har du några frågor eller behöver du mer information är du välkommen att kontakta oss med hjälp av formuläret nedan. Vi hjälper dig gärna.
$(this).closest('#se-contactEmailFormConfigWrapper').find('.js-se-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('กรอกได้แต่ตัวอักษรเท่านั้น');
messagesEN.push('กรอกได้แต่ตัวอักษรเท่านั้น');
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('ความยาวขั้นต่ำคือ 2 อักขระ');
messagesEN.push('ความยาวขั้นต่ำคือ 2 อักขระ');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
notEmpty: {
message: 'โปรดกรอกชื่อของคุณ',
message_en: 'โปรดกรอกชื่อของคุณ'
},
stringLength: {
message: 'คุณใส่ข้อความในช่องข้อมูลนี้จนครบจำนวนสูงสุด 40 อักขระแล้ว',
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('กรอกได้แต่ตัวอักษรเท่านั้น');
messagesEN.push('กรอกได้แต่ตัวอักษรเท่านั้น');
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('ความยาวขั้นต่ำคือ 2 อักขระ');
messagesEN.push('ความยาวขั้นต่ำคือ 2 อักขระ');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
notEmpty: {
message: 'โปรดกรอกนามสกุลของคุณ',
message_en: 'โปรดกรอกนามสกุลของคุณ'
},
stringLength: {
message: 'คุณใส่ข้อความในช่องข้อมูลนี้จนครบจำนวนสูงสุด 40 อักขระแล้ว',
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('โปรดกรอกหมายเลขโทรศัพท์ของคุณ (เพียงตัวเลขเท่านั้นและไม่เว้นวรรค)');
messagesEN.push('โปรดกรอกหมายเลขโทรศัพท์ของคุณ (เพียงตัวเลขเท่านั้นและไม่เว้นวรรค)');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
stringLength: {
message: 'คุณใส่ข้อความในช่องข้อมูลนี้จนครบจำนวนสูงสุด 20 อักขระแล้ว',
message_en: 'You have exceeded the maximum length of 20 characters for this field',
max: 20
},
callbackPhone: {
alias: 'callback',
message: 'โปรดกรอกหมายเลขโทรศัพท์ของคุณ',
message_en: 'โปรดกรอกหมายเลขโทรศัพท์ของคุณ',
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: 'โปรดกรอกที่อยู่อีเมลของคุณ',
message_en: 'โปรดกรอกที่อยู่อีเมลของคุณ'
},
notEmpty: {
message: 'โปรดกรอกที่อยู่อีเมลของคุณ',
message_en: 'โปรดกรอกที่อยู่อีเมลของคุณ'
},
stringLength: {
message: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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: 'โปรดกรอกประเทศ\/ภูมิภาคของคุณ',
message_en: 'โปรดกรอกประเทศ\/ภูมิภาคของคุณ'
}
}
},
'values[contactEmailFormDefinition_swaClubMember]': {
trigger: 'change',
validators: {
}
},
'values[contactEmailFormDefinition_scsMember]': {
trigger: 'change',
validators: {
}
},
'values[contactEmailFormDefinition_scsMemberNumber]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'โปรดกรอกหมายเลขสมาชิก SCS ของคุณ',
message_en: 'โปรดกรอกหมายเลขสมาชิก SCS ของคุณ'
},
stringLength: {
message: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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: 'โปรดกรอกข้อความ',
message_en: 'โปรดกรอกข้อความ'
},
stringLength: {
message: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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('โปรดกรอกหมายเลขคำสั่งซื้อที่ถูกต้อง (15 หลัก)');
messagesEN.push('โปรดกรอกหมายเลขคำสั่งซื้อที่ถูกต้อง (15 หลัก)');
errorOccured |= true;
}
if (errorOccured) {
return {
valid: false,
message: messages.join('<br/>'),
message_en: messagesEN
}
} else {
return true;
}
}
},
stringLength: {
message: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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: 'โปรดเลือกหัวข้อของคุณ',
message_en: 'โปรดเลือกหัวข้อของคุณ'
}
}
},
'values[contactEmailFormDefinition_contactSubject]': {
trigger: 'change',
validators: {
notEmpty: {
message: 'โปรดเลือกหัวข้อของคุณ',
message_en: 'โปรดเลือกหัวข้อของคุณ'
}
}
},
'values[contactEmailFormDefinition_contactSubjectTxt]': {
trigger: 'blur',
validators: {
notEmpty: {
message: 'ใส่หัวข้อที่คุณต้องการ',
message_en: 'ใส่หัวข้อที่คุณต้องการ'
},
stringLength: {
message: 'จำนวนอักขระสำหรับช่องนี้ต้องอยู่ระหว่าง 0 และ 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();
}
};