Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

94
Visualizações
Evite que el usuario ingrese letras en la etiqueta de entrada html según la variable

Estoy tratando de hacer un juego de palabras en el que el usuario obtiene una cadena de 8 letras y debe formar tantas palabras como pueda con ellas. Estoy tratando de hacerlo para que solo puedan escribir las letras de la cadena de 8 letras. Tengo problemas para bloquear las letras en función de la variable, que es la cadena de 8 letras.

Aquí está mi código:

 // Choosing random letters for game (3 vowels, 5 consonants) function getRandomCharsFromString(str, length) { return Array.from({ length }, () => { return str[Math.floor(Math.random() * str.length)] }); } function shuffle(str) { var a = str.split(""), n = a.length; for (var i = n - 1; i > 0; i--) { var j = Math.floor(Math.random() * (i + 1)); [a[i], a[j]] = [a[j], a[i]]; } return a.join(""); } function getRandomString() { var vowels = 'aeiou'; var consonants = 'bcdfghjklmnpqrstvwxyz'; var randomVowels = getRandomCharsFromString(vowels, 3); var randomConsonants = getRandomCharsFromString(consonants, 5); var randomWord = [...randomVowels, ...randomConsonants].join('') return shuffle(randomWord) } //Setting the letter variable to nothing var letters = ""; //Showing letters generated in the gameplay interface function newGame() { words = 0; document.querySelector('.gameplay').style.display = 'flex'; letters = getRandomString(); document.querySelector('#wordcount').innerHTML = `${words} `; document.querySelector('#gameletters').innerHTML = `${letters}`; console.log(letters); } //Preventing player from using letters that aren't in the word function keyPressed(e) { console.log(e.key); if (e.key == `${letters}`) { return true; } else { return false; } }

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Aquí mismo

 if (e.key == `${letters}`) {

Esto prueba si la tecla presionada, en e.key es igual a las letters de la cadena, que nunca será.

Hay un par de otras formas en las que podría probar.

 if (letters.indexOf(e.key) > -1) { return true; } else { return false; } // or if (letters.includes(e.key)) { return true; } else { return false; }

Todo lo que devuelve verdadero, de lo contrario, devuelve falso, se puede acortar para devolver simplemente los resultados de la prueba:

 return (letters.includes(e.key));

Otra forma sería convertir la cadena de letras en una matriz y usar .includes() , pero en realidad solo si tiene alguna otra razón para querer una matriz.

 return letters.split('').includes(e.key);
about 4 years ago · Juan Pablo Isaza Relatório

0

La propiedad del evento key será un solo carácter/letra. Su cadena de 8 caracteres no se equiparará a solo uno. Tiene varias opciones de implementación rápida. Aquí está mi actualización sugerida, asumiendo que está adjuntando keyPressed al controlador de eventos de keypress de tecla:

 function keyPressed(e) { console.log(e.key); if (letters.includes(e.key)) { return true; } else { return false; } }

O, una versión un poco más comprimida:

 function keyPressed(e) { return letters.includes(e.key); }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda