Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Tenho um campo onde no js tenho uns códigos já pronto e no campo de txt eu só quero cadastrar os mesmos e se der erro o alert não deve continuar.
Ao clicar em OK do alert está cadastrando o código errado, e não é isso que eu quero.
Alguém pode me ajudar?
function verifica() {
var chaves = ['abc123', 'de1234', 'aass12', '22sswa', 'abcd01'];
var item = document.getElementById('nometxt').value;
if (chaves.indexOf(item) > -1) {
alert("Sucesso! Você cadastrou um novo código.");
} else {
alert("Código iválido, tente outro");
}
}@Rangel Ezln Na teoria seu código está correto. Acredito que possa ser o valor do input que você não esteja capturando.
Eu pessoalmente faria algo assim:
var valor_do_input = 'xxxxxxx';
var a = ['aaa','bbb','ccc','ddd','eee'];
if(a.indexOf(valor_do_input) !== -1) {
alert("O valor do input existe dentro da array");
}
else {
alert("Não tem o valor " + valor_do_input + " dentro do array");
}
Sobre usar uma biblioteca externa. Jamais faça isso! A não ser que vá ter de utilizar vários recursos dela. Hoje em dia cada vez mais e mais sites estão fazendo da internet um lixo pelo uso dessa má prática de implementar um biblioteca para executar um simples coisa, pra que gerar X tantos kbs ou MB para executar uma função que você possa fazer um 5~6 linhas gerando menos de 10 bits?
Para mais detalhe array/indexOf:
[https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)>
1 hora atrás, Omar~ disse:
@Rangel Ezln Na teoria seu código está correto. Acredito que possa ser o valor do input que você não esteja capturando.
Eu pessoalmente faria algo assim:
var valor_do_input = 'xxxxxxx';
var a = ['aaa','bbb','ccc','ddd','eee'];
if(a.indexOf(valor_do_input) !== -1) {
alert("O valor do input existe dentro da array");
}
else {
alert("Não tem o valor " + valor_do_input + " dentro do array");
}
Sobre usar uma biblioteca externa. Jamais faça isso! A não ser que vá ter de utilizar vários recursos dela. Hoje em dia cada vez mais e mais sites estão fazendo da internet um lixo pelo uso dessa má prática de implementar um biblioteca para executar um simples coisa, pra que gerar X tantos kbs ou MB para executar uma função que você possa fazer um 5~6 linhas gerando menos de 10 bits?
Para mais detalhe array/indexOf:
[https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf](https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf)
Eu concordo com sua opinião em partes, foi apenas uma sugestão e eu não disse sobre ter a obrigação de utilizar uma biblioteca para o caso de um trabalho pontual como o dele, porém caso ele possua um sistema e ele cresça o que é muito comum, ele vai naturalmente notar a necessidade de consistência pelo sistema e vai acabar notando que se faz necessário o uso. Imagina um site/empresa grande pensando, vamos 'reinventar a roda' para validação, inviável, não é? É a situação que vai definir a necessidade dele e nada mais.Boa tarde Rangel, você está chamando a função no onSubmit ?
Se não tente usá-la assim <form onSubmit="verifica()">
E na função ao dar erro coloca um return false
alert('Erro');
return false;
Acredito que isso possa ajudar.
Outra ideia seria ao invés de usar um campo txt usar um select com options. A não ser que tenha muitas opções.
Olá, não seria mais consistente utilizar um biblioteca para tal tarefa?
http://parsleyjs.org
https://validatejs.org