Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Em algumas regiões do Brasil, é comum você ter endereços de casas com números e letras (ex.: Rua Taltaltal, número 12A). Porém tivemos casos de clientes tendo problemas ao subir o cadastro com o número da casa digitado dessa forma (como quebrando a geração de contratos, subida de arquivos de documentos…).

Sendo assim, fizemos um trecho de código para restringir essa inserção de informação. O código se encontra abaixo. Os trechos de código (snippets) devem ser inseridos com os comentários para ficar mais fácil de achar e dar manutenção ou personalizar.

Antes de continuarmos com esse tutorial, certifique-se que você sabe localizar elementos usando o “Inspecionar“ de seu navegador, e capturar o seletor CSS dos elementos dessa forma.

Este código vai precisar que algumas alterações sejam feitas nos assines. No caso vamos fazer um exemplo com o /assine e com o /assine-revendedor. Abra o assine e insira a div de html pertinente (no caso, no /assine inseriremos a div com o texto “Assine 1“, e no /assine-revendedor, a div com “Assine Rev 1“).1 - Estilização em

Bloco de código
<div class="ixcs-d-none">
    <p class="ixcs-triggertext">Assine 1</p>
</div>


<div class="ixcs-d-none">
    <p class="ixcs-triggertext">Assine Rev 1</p>
</div>

Depois vamos estilizar o CSS. Insira em “Sistema - Config - Core Website“, na seção “Custom Style“

Bloco de código
/*Estilização aviso de restrição*/
.numres-tooltip-text {
      text-align: center;
      padding: 5px;
      border: 2px solid red;
      width: 200px;
      font-size: 12px;
      display: none;
      font-weight: 500;
      color: red;
      background-color: rgb(255, 216, 216);
      margin-left: auto;
      margin-right: auto;
      margin-top: 2rem;
}

.ixcs-d-none {
    display: none;
}
/*Fim*/

2 - Código em JavascriptE então faça a inserção do código em Javascript.

O código em si precisará de algumas alterações, que você precisa fazer de acordo com o provedor. Não insira direto da forma que está aqui!

Bloco de código
// v.23.20.0 - 2815/07/2023
// Cria restrição de número da residência para aceitar apenas números.

let iCtrlTriggerRestricao 02/2024

const tooltipTxtContent = "Se necessário, insira números e letras no campo \"Complemento\" mais à frente.";
var ictrlGetNumCasa = 1
var numCasa;
var toolTipIcon;
var numCasaWrp;
var numCasaLabel;
var ixcTrgTxt;

function numCasaRestricaotrimNumCasa () {
      if (numCasa) {
            numCasa.addEventListener("keyup", function(e) {
                       if (/\D/g.test(this.value)) {
               
                this.value = this.value.replace(/\D/g, '');
            }
        })
    }
   
            }
        })
    }
    return
}

function triggerRestricaocreateToolTip () {
    
    numCasa
    let toolTip = document.createElement("p")
    let toolTipTxtNode = document.createTextNode("Se necessário, insira números e letras no campo \"Complemento\" mais à frente.");
    toolTip.classList.add("numres-tooltip-text");
    toolTip.appendChild(toolTipTxtNode);
    toolTipIcon = document.querySelector(".tooltip-info-circle");
    numCasaWrp.append(toolTip);
}

function getTriggerText () {
    ixcTrgTxt = document.querySelector("#bfc_numberOfAddress.ixcs-triggertext").innerText;
    numCasa.placeholder = "1234";
    
   
}

function getNumCasa () {
    // numCasa, pelo seletor ser um ID, dificilmente precisará ser alterado
    numCasa = document.querySelector("#bfc_numberOfAddress");
    
    if (numCasa != undefined && iCtrlTriggerRestricaoictrlGetNumCasa == 1) {
        let numCasaLabel = document.querySelector("body > wda-root > theme-providerfy > wda-providerfy-content-viewer.body > plugin-provider-checkout > div > section > div > div > plugin-provider-checkout-before-checkout > div > div > div > div:nth-child(3) > div > form > div:nth-child(3) > div:nth-child(1) > div.col-12.remove-hover-from-cep.col-md-6 > div > label")
       
        runRestriction()
        ictrlGetNumCasa -= 1
    } else if (numCasa != undefined && ictrlGetNumCasa == 0) {
        console.log("numCasa already defined")
    } else {
        console.log("numCasa is undefined")
    }
}

function runRestriction () {
    getTriggerText ();
    defineRestriction ();
}

function defineRestriction () {
    if (ixcTrgTxt == "Assine 1") {
        createRestriction1()
    }
    else if (ixcTrgTxt == "Assine Rev 1") {
        createRestriction2 ()
    }
    else {
        console.log("Trigger text not found")
    }
}

//Cria restrição para /assine 1
function createRestriction1 () {

    numCasa.placeholder = "1234";

    numCasaLabel = document.querySelector("div.col-12:nth-child(2) > div:nth-child(1) > label:nth-child(1)")
    numCasaLabel.innerHTML = 'Nº da Residência (apenas números) <i class="fas fa-info-circle tooltip-info-circle"></i>'
        
        let toolTip

    numCasaWrp = document.querySelector("div.col-12:nth-child(2) > div:nth-child(1)");

    createToolTip ();

    let toolTip2 = document.createElementquerySelector("p.numres-tooltip-text");
           
  let toolTipTxtNode = documenttoolTipIcon.createTextNodeaddEventListener("Se necessário, insira números e letras no campo \"Complemento\" mais à frente.");
        toolTip.classList.add("numres-tooltip-text");
        toolTip.appendChild(toolTipTxtNode);
        toolTipIcon = document.querySelector(".tooltip-info-circle");
        
        numCasaWrp = document.querySelector("body > wda-root > theme-providerfy > wda-providerfy-content-viewer.body > plugin-provider-checkout > div > section > div > div > plugin-provider-checkout-before-checkout > div > div > div > div:nth-child(3) > div > form"click", () => {
        if (toolTip2.style.display == "none") {
            toolTip2.style.display = "block";
        } else {
            toolTip2.style.display = "none";
        }
    })
    
    numCasa.addEventListener("click", () => {
        if (toolTip2.style.display == "none") {
            toolTip2.style.display = "block";
        } else {
            toolTip2.style.display = "none";
        }
    })

    trimNumCasa ();
}

//Cria restrição para /assine-revendedor 1
function createRestriction2 () {

    numCasa.placeholder = "1234";

    numCasaLabel = document.querySelector("div.col-12:nth-child(2) > div:nth-child(31) > divlabel:nth-child(1)")
>    div.col-12.remove-hover-from-cep.col-md-6 > div");
        numCasaWrp.append(toolTip);
        
        numCasaLabel.innerHTML = 'Nº da Residência (apenas números) <i class="fas fa-info-circle tooltip-info-circle"></i>'

    numCasaWrp = document.querySelector("div.col-12:nth-child(2) > div:nth-child(1)");

    createToolTip ();

    let toolTip2 = document.querySelector(".numres-tooltip-text");
            
        toolTipIcon.addEventListener("click", () => {
              if (toolTip2.style.display == "none") {
                    toolTip2.style.display = "block";
              } else {
                    toolTip2.style.display = "none";
              }
        })
        
        numCasa.addEventListener("click", () => {
              if (toolTip2.style.display == "none") {
                    toolTip2.style.display = "block";
              } else {
                    toolTip2.style.display = "none";
              }
        })
 
               numCasaRestricao ();
        iCtrlTriggerRestricao -= 1;
    } else {
        return
    }
}

setInterval(triggerRestricao, 5000);
// FimtrimNumCasa ();
}

setInterval(getNumCasa, 2000)

Note que nas linhas 54 a 64, a função está chamando uma função criadora de restrição para cada tipo de texto. Isso significa que o código vai criar uma restrição de acordo com o assine. Isso permite que o código possa ser reaproveitado entre assines.

TUTORIAL INCOMPLETO, DEPOIS CONTINUO - GSacata

As alterações que você precisará fazer:

Nota: nas linhas 26 e 35 foi feita a seleção do seletor, elemento por elemento. Dependendo de como estiver o checkout do cliente (ex.: campos a mais, pre_check_customer…), isso altera a ordem e quantidade de campos, então pode ser necessária a correção desses trechos. Estou enviando abaixo o endereço de cada elemento e a qual variável ele deve ser atrelado. Use o modo “Inspecionar“ do seu navegador, selecione o elemento e clique em “Copy selector“, “Copiar seletor CSS“ ou equivalente.

...