Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

100
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda