corrigir código javascript

20/08/2019

0

o código não retorna nada, alguém sabe onde está o erro?

function ValidaForm(){
    var code = ["AHFCRLUE", "ADCBEFG"];
    if (document.forms[0].captcha.value != code[]) {
        alert("Código de verificação incorreto, favor tentar novamente");
        return false;
    }else{
        window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
        return false;
    }
}

__________________________________
html:

<form id="form1" name="form1" method="post" action="#" onsubmit="return ValidaForm()">

  <label>Digite a chave de verificação: </label>
  <input type="text" name="captcha" id="captcha">
  
  <input type="submit" value="Verificar">

</form>
Renan Longhi

Renan Longhi

Responder

Posts

21/08/2019

Luiz Neto

Bom dia Renan,

substituir a linha :
    if (document.forms[0].captcha.value != code[]) {


Por:
   var idx = code.indexOf(document.forms[0].captcha.value);
    if (idx = -1){


Veja se isso resolve o seu problema.

Você cria uma variável idx que vai indicar a posição do valor procurado dentro da array. (IndexOf)
Sendo um valor diferente de (-1) quer duzer quer o valor encontra-se na array.

Abraços
LM
Responder

21/08/2019

Alex William

Olá amigo, tudo bem?

Vamos ao seu problema:

Primeira coisa que eu notei, que a sua variável "code" é um array de 2 posições, mas quando você testa ela, você não especifica qual posição testar.
Logo seu script tenta testar se uma "String" e um "Array" são idênticos e isso gera erro na função.

Tente desta forma:

<script>
    function ValidaForm(){
        var code = ["AHFCRLUE", "ADCBEFG"];
        if (document.forms[0].captcha.value != code[0] && document.forms[0].captcha.value != code[1]) {
            alert("Código de verificação incorreto, favor tentar novamente");
            return false;
        }else{
            window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
            return false;
        }
    }
</script>

<form id="form1" name="form1" method="post" action="#" onsubmit="return ValidaForm()">

    <label>Digite a chave de verificação: </label>
    <input type="text" name="captcha" id="captcha">

    <input type="submit" value="Verificar">

</form>


Caso você use somente estes dois códigos do captcha, ai pode ser diretamente testados, mas se você tiver muitos codigos de captcha, deve fazer um for para testar todos.

Espero ter ajudado. :D
Responder

21/08/2019

Renan Longhi

Olá amigo, tudo bem?

Vamos ao seu problema:

Primeira coisa que eu notei, que a sua variável "code" é um array de 2 posições, mas quando você testa ela, você não especifica qual posição testar.
Logo seu script tenta testar se uma "String" e um "Array" são idênticos e isso gera erro na função.

Tente desta forma:

<script>
    function ValidaForm(){
        var code = ["AHFCRLUE", "ADCBEFG"];
        if (document.forms[0].captcha.value != code[0] && document.forms[0].captcha.value != code[1]) {
            alert("Código de verificação incorreto, favor tentar novamente");
            return false;
        }else{
            window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
            return false;
        }
    }
</script>

<form id="form1" name="form1" method="post" action="#" onsubmit="return ValidaForm()">

    <label>Digite a chave de verificação: </label>
    <input type="text" name="captcha" id="captcha">

    <input type="submit" value="Verificar">

</form>


Caso você use somente estes dois códigos do captcha, ai pode ser diretamente testados, mas se você tiver muitos codigos de captcha, deve fazer um for para testar todos.

Espero ter ajudado. :D



Muito obrigado pela ajuda, nem tinha pensado no for. Pode me ajudar a arrumá-lo? Meu código está assim por enquanto:

function ValidaForm(){
    var code = ["AHFCRLUE", "ADCBEFG"];
    var i;
    for(i=0; i<code.length; i++){
        if (document.forms[0].captcha.value == code[i]) {
            window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
            return false;
        }
        else{
            alert("Código de verificação incorreto, favor tentar novamente");
            return false;
        }
    }
    
}


Mas só esta funcionando com a primeira chave, com o else fora também não está funcionando. Estou pesquisando aqui mas sou novato na programação kkk
Muito obrigado pela ajuda
Responder

30/08/2019

Alex William

Olá amigo, tudo bem?

Vamos ao seu problema:

Primeira coisa que eu notei, que a sua variável "code" é um array de 2 posições, mas quando você testa ela, você não especifica qual posição testar.
Logo seu script tenta testar se uma "String" e um "Array" são idênticos e isso gera erro na função.

Tente desta forma:

<script>
    function ValidaForm(){
        var code = ["AHFCRLUE", "ADCBEFG"];
        if (document.forms[0].captcha.value != code[0] && document.forms[0].captcha.value != code[1]) {
            alert("Código de verificação incorreto, favor tentar novamente");
            return false;
        }else{
            window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
            return false;
        }
    }
</script>

<form id="form1" name="form1" method="post" action="#" onsubmit="return ValidaForm()">

    <label>Digite a chave de verificação: </label>
    <input type="text" name="captcha" id="captcha">

    <input type="submit" value="Verificar">

</form>


Caso você use somente estes dois códigos do captcha, ai pode ser diretamente testados, mas se você tiver muitos codigos de captcha, deve fazer um for para testar todos.

Espero ter ajudado. :D



Muito obrigado pela ajuda, nem tinha pensado no for. Pode me ajudar a arrumá-lo? Meu código está assim por enquanto:

function ValidaForm(){
    var code = ["AHFCRLUE", "ADCBEFG"];
    var i;
    for(i=0; i<code.length; i++){
        if (document.forms[0].captcha.value == code[i]) {
            window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
            return false;
        }
        else{
            alert("Código de verificação incorreto, favor tentar novamente");
            return false;
        }
    }
    
}


Mas só esta funcionando com a primeira chave, com o else fora também não está funcionando. Estou pesquisando aqui mas sou novato na programação kkk
Muito obrigado pela ajuda



Olá amigo. Use uma variavel para verificar dentro do for. Depois teste ela.
function ValidaForm(){
    var code = ["AHFCRLUE", "ADCBEFG"];
    var i, isValido;
    for(i=0; i<code.length; i++){
        if (document.forms[0].captcha.value == code[i]) {
            isValido = TRUE;
        }
        else{
            isValido = FALSE;
        }
    }
    
    if(isValido==TRUE){
        window.location.replace("https://spsseguranca.com.br/home/cadastro-para-treinamentos-em-itajai/");
        return false;
    }else{
        alert("Código de verificação incorreto, favor tentar novamente");
        return false;
    }
}


Dessa forma ele testa todas as posições informadas antes de validar se alguma das posições é igual ao captcha.

Espero ter ajudado. :D
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar