$(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);
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
Assunto
Selecione um dos seguintes assuntos
$(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);
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();
}
};
$(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);
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();
}
};
{"didYouKnowLabel":"Το γνωρίζατε:","product-size":["Para saber o seu tamanho ideal, utilize o nosso guia de tamanhos.","Para mais informações, consulte o nosso <a href="/s-swarovski-ring-size/" target="_blank" rel="noopener noreferrer">Guia de Tamanhos</a>."],"product-availability":["Para verificar a disponibilidade na loja, siga estes passos: <br/>1. Escolha o seu produto na nossa loja online. <br/>2. Na página de detalhes do produto, ao lado de “Adicionar ao carrinho,” selecione “Encontrar em loja,” depois clique em “Click & Collect: Verificar disponibilidade.” <br/>3. Introduza a sua localização atual ou preferida e veja as opções disponíveis.","Para mais informações, consulte as nossas <a href="/s-faq-order/?accordionID=CC-Overview_AE-product_availibility" target="_blank" rel="noopener noreferrer">FAQ</a>."],"product-colors":["Por favor use o Filtro de Cor na página de lista de produtos ou verifique as variações de cor na página de detalhes do produto para encontrar a correspondência perfeita."],"promotion-info":["A Swarovski realiza promoções ao longo do ano; para se manter atualizado, recomendamos inscrever-se na nossa newsletter."],"promotion-extension":["Nossas promoções sempre têm períodos de validade definidos e, assim que a data de término passa, os códigos de desconto deixam de funcionar automaticamente ou o preço padrão retorna. Os pedidos feitos antes do lançamento de uma promoção não podem ser alterados para aproveitar a nova promoção."],"promotion-quality":["Verifique os Termos & Condições da promoção para garantir que o seu artigo é elegível e confirme que a sua encomenda foi efetuada durante o período promocional.","Para mais detalhes, consulte as nossas <a href="/s-faq-order/?accordionID=CC-Overview_AE-purchase_qualify" target="_blank" rel="noopener noreferrer">FAQ</a>."],"order-resendOrderConfirmation":["Com certeza! Se você deseja uma atualização sobre seu pedido, visite <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">Estado da encomenda</a>. Se você não souber o número do seu pedido, basta fornecer seu endereço de e-mail e reenviaremos a confirmação do pedido."],"order-orderStatus":["Pode facilmente verificar o estado da sua encomenda aqui <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">Estado da encomenda</a>."],"order-cancelEntire":["Pode ser possível cancelar a sua encomenda dentro de aproximadamente 15 minutos após a receção da confirmação da encomenda.","Para mais informações, consulte as nossas <a href="/s-faq-order/?accordionID=CC-Overview_AE-cancel_order_new" target="_blank" rel="noopener noreferrer">FAQ</a>."],"order-cancelPartially":["Cancelamentos parciais não são possíveis, apenas cancelamentos completos do pedido em aproximadamente 15 minutos após a confirmação.","Veja <a href="/s-faq-order/?accordionID=CC-Overview_AE-cancel_order_new" target="_blank" rel="noopener noreferrer">FAQ</a> para mais detalhes."],"order-changeBillingAddress":["Não conseguimos alterar um endereço de cobrança."],"order-return":["Você pode seguir os passos descritos em nosso <a href="/s-faq-return/?accordionID=CC-Overview_AE-how-do-I-return-my-item" target="_blank" rel="noopener noreferrer">FAQ</a> para obter orientações detalhadas."],"order-returnPolicy":["Para mais informações sobre nossa política de devolução, clique aqui <a href="/s-faq-return/?accordionID=CC-Overview_AE-can-I-do-a-return" target="_blank" rel="noopener noreferrer">FAQ</a>"],"order-onlineRefundStatus":["As devoluções demoram cerca de 14 dias úteis. Receberá um email de confirmação assim que recebermos a sua devolução, e o reembolso pode demorar até 10 dias úteis a aparecer na sua conta.","Para mais detalhes, consulte as nossas <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":["Trocas não são possíveis. Por favor, devolva os artigos indesejados de acordo com a nossa política de devoluções e faça uma nova encomenda para o produto correto.","Para mais detalhes, consulte as nossas <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-exchange-purchase" target="_blank" rel="noopener noreferrer">FAQ</a>."],"exchange-exchangeInStore":["Você pode encontrar informações detalhadas em nosso <a href="/s-faq-return/?accordionID=CC-Purchase-Returns_AE-exchange-product" target="_blank" rel="noopener noreferrer">FAQ</a>."],"exchange-exchangeProductFromAnotherCountry":["Por várias razões, a Swarovski não tem uma política global de trocas ou reembolsos. Portanto, não podemos trocar, substituir ou reembolsar produtos comprados em outros países."],"delivery-tracking":["Você recebeu o link de rastreamento com sua confirmação de envio. Alternativamente, você pode verificar o progresso de sua remessa aqui: <a href="/s-faq-orderstatus/Swarovski-Order-Status-FAQs/" target="_blank" rel="noopener noreferrer">Estado da encomenda</a>."],"delivery-damagedItem":["Pedimos desculpas pelo inconveniente. Por favor, entre em contato com o nosso serviço de atendimento ao cliente e forneça fotos da caixa de envio e do produto danificado para que possamos encontrar uma solução para você."],"delivery-missingItem":["Pedimos desculpas pelo inconveniente. A caixa de envio foi violada? Por favor, entre em contato com o nosso serviço de atendimento ao cliente com fotos da caixa de envio, iremos investigar e encontrar uma solução para você."],"delivery-changeAddress":["Alterar o endereço ou a data de entrega pode não ser possível depois que a encomenda estiver em trânsito. Por favor use o portal online do nosso parceiro de entrega para gerir as opções de entrega.","Para mais detalhes, consulte as nossas <a href="/s-faq-shipping/Swarovski-Shipping-FAQs/?accordionID=CC-Overview_AE-delivery_address" target="_blank" rel="noopener noreferrer">FAQ</a>."],"delivery-changeCountry":["A entrega para outro país/região não é possível. Por favor, faça seu pedido na loja online do destino de entrega. Para alterar o país/região e idioma, clique no nome do país/região no menu de seleção."],"payment-electronicCard":["Os cartões-presente eletrônicos são inseridos na etapa de pagamento do checkout. Confirme se você está inserindo o número do cartão de 10 ou 16 dígitos corretamente. Certifique-se de que não está inserindo um código de desconto ou voucher.","Para mais informações, consulte aqui <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":["Para pagar com vários cartões-presente, siga os passos para fundir os cartões-presente na fase de pagamento."],"payment-payWith":["Para resgatar seu cartão-presente, siga estas etapas fáceis descritas em nosso <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":["Certifique-se de que seus dados pessoais e de pagamento estão consistentes. Para mais informações, consulte nossas <a href="/s-faq-payment/Swarovski-Payment-FAQs/?accordionID=CC-Purchase-Payment_AE-methods" target="_blank" rel="noopener noreferrer">FAQ</a>."],"website-unableToCheckout":["Por favor, verifique aqui antes de nos contatar <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-website-issue" target="_blank" rel="noopener noreferrer">Problema no site FAQ</a>."],"website-resetPassword":["Por favor, use a função "esqueceu sua senha".","Para mais informações, por favor visite <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-reset_pasword" target="_blank" rel="noopener noreferrer">FAQ</a>."],"website-unableToLogin":["Por favor, use a função "esqueceu sua senha".","Para mais informações, por favor visite <a href="/s-faq-order/?accordionID=CC-Purchase-Order_AE-reset_pasword" target="_blank" rel="noopener noreferrer">FAQ</a>."],"swarovskiclub-unsubscribeNewsletter":["Enviamos dois tipos de e-mails: boletins informativos com promoções e coleções, e atualizações de membros (recompensas, status ou alterações do programa). Para cancelar a inscrição em boletins, clique em "cancelar inscrição" na parte inferior do e-mail ou atualize suas configurações em "Minha conta" no Swarovski.com. Para parar todas as comunicações, incluindo recompensas, entre em contato com o Serviço de Atendimento ao Cliente para encerrar sua conta."],"swarovskiclub-emailAfterUnsubscribe":["Se você cancelou a inscrição em nosso boletim informativo, mas continua sendo membro do Swarovski Club, você ainda receberá e-mails sobre recompensas, status de nível ou alterações no programa. Para interromper isso, entre em contato com o Atendimento ao Cliente para fechar sua conta. Você também pode estar inscrito para atualizações de uma de nossas submarcas."],"swarovskiclub-voucherNotWorking":["Para mais detalhes, acesse nossa entrada no FAQ sobre como vincular sua associação ao clube e usar seu voucher de desconto <a href="/s-faq-club/?accordionID=CC-Membership-Swa-Club_AE-not-use-discount-voucher" target="_blank" rel="noopener noreferrer">FAQ</a>."],"swarovskiclub-extendedVoucher":["Os vouchers de desconto do Swarovski Club não podem ser estendidos. O período de validade está especificado nos Termos e Condições incluídos no e-mail de recompensa que você recebeu."],"swarovskiclub-saleItem":["Os vouchers de desconto do Swarovski Club não podem ser usados em itens em promoção. Para mais detalhes, consulte os Termos e Condições incluídos no e-mail de recompensa que você recebeu."],"swarovskiclub-birthdayGiftVoucher":["Você pode retirar seu presente na loja de sua preferência. Se você não tiver uma ou não souber qual visitar, pode fazer login na sua conta e selecionar uma loja preferida. Alternativamente, você também pode usar nosso Localizador de Lojas para encontrar uma loja que ofereça o Swarovski Club. Clientes em alguns mercados podem resgatar seu presente online na próxima compra online."],"scsmembership-renewMembership":["Para renovar sua assinatura, siga estas etapas simples descritas em nossa <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":["Para se tornar um novo membro, siga estas etapas simples descritas em nossa <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":["Os pacotes de adesão são normalmente enviados 4-6 semanas após a inscrição, com novas adesões ou renovações despachadas no primeiro dia do mês seguinte. Para adesões de 3 anos (2º e 3º anos), os pacotes são enviados no início do ano, permitindo que os membros aproveitem o presente anual e explorem novas novidades."],"warranty-itemCoveredByWarrant":["A Swarovski oferece uma garantia completa para defeitos de fabrico e materiais em produtos adquiridos em lojas oficiais ou revendedores autorizados.","Para mais detalhes sobre a nossa política de garantia, consulte as nossas <a href="/s-faq-warranty/?accordionID=CC-Products-Warranty_AE-policy" target="_blank" rel="noopener noreferrer">FAQ</a>."],"warranty-warrantyPolicy":["Para uma visão completa de nossa política de garantia, visite nossa seção dedicada de <a href="/s-faq-warranty/?accordionID=CC-Products-Warranty_AE-policy" target="_blank" rel="noopener noreferrer">Perguntas frequentes</a>."],"repair-repairableItem":["Para saber mais, leve o seu produto e o comprovativo de compra à loja Swarovski mais próxima para avaliação.","Pode encontrar a loja mais próxima utilizando o nosso <a href="/store-finder/?features=repairService" target="_blank" rel="noopener noreferrer">Localizador de Lojas</a>."],"repair-status":["Pode facilmente verificar o estado da sua reparação aqui <a href="/s-faq-repairs/Swarovski-Repair-Replacement-FAQs/?accordionID=CheckRepairStatusThemedAccordionEntryComponent" target="_blank" rel="noopener noreferrer">Ver estado de reparação</a>."],"repair-cost":["Para saber o seu tamanho ideal, utilize o nosso guia de tamanhos.","Para mais informações, consulte o nosso <a href="/store-finder/?features=repairService" target="_blank" rel="noopener noreferrer">Guia de Tamanhos</a>."],"repair-visitStore":["Você precisa visitar uma loja porque apenas as lojas autorizadas estão equipadas para avaliar e reparar corretamente o produto."]}
If you have a question or require further information, then please feel free to contact us using the form below. We would be happy to help.
$(this).closest('#kr-contactEmailFormConfigWrapper').find('.js-kr-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: 'Έχετε υπερβεί το μέγιστο μήκος 35 χαρακτήρων για αυτό το πεδίο',
message_en: 'You have exceeded the maximum length of 35 characters for this field',
max: 35
},
}
},
'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: 'Έχετε υπερβεί το μέγιστο μήκος 35 χαρακτήρων για αυτό το πεδίο',
message_en: 'You have exceeded the maximum length of 35 characters for this field',
max: 35
},
}
},
'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: 'Εισαγάγετε τη διεύθυνση email σας.',
message_en: 'Εισαγάγετε τη διεύθυνση email σας.'
},
notEmpty: {
message: 'Εισαγάγετε τη διεύθυνση email σας.',
message_en: 'Εισαγάγετε τη διεύθυνση email σας.'
},
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('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: 'Ο αριθμός των χαρακτήρων σε αυτό το πεδίο πρέπει να είναι μεταξύ 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);
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();
}
};
Το πρόγραμμα περιήγησής σας έχει ενεργοποιημένο τον αποκλεισμό cookies, ενεργοποιήστε τα cookies και φορτώστε εκ νέου για να συνεχίσετε τη χρήση του ιστοτόπου.