corrigir código javascript

JavaScript

HTML5

20/08/2019

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

Curtidas 0

Respostas

Luiz Neto

Luiz Neto

20/08/2019

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
GOSTEI 0
Alex William

Alex William

20/08/2019

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
GOSTEI 0
Renan Longhi

Renan Longhi

20/08/2019

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
GOSTEI 0
Alex William

Alex William

20/08/2019

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
GOSTEI 0
POSTAR