Resultado previsto: el usuario ingresa cualquier carácter desde el teclado. Luego se usarán para verificar si la cadena ingresada es una palabra de la API de diccionario. Si coinciden entre sí, la cadena estará en el elemento <p> . De lo contrario, la cadena ingresada pasará por anotherFunction() .
Preguntas:
keyboard.event , pero no en <input> / <textarea> , que fetchApi() pueda buscar una palabra real de una cadena, en lugar de cada carácter ingresado? (Como si no quisiera eso solo hasta que el usuario escriba la palabra y presione Enter , luego la API comenzará a funcionar)Gracias una y otra vez. ¡Muchas gracias!
var characters = ''; var text = document.getElementById("text"); var word = result[arg0].word; document.addEventListener('keydown', function(input) { if (input.key >= 'a' && input.key <= 'z') { fetchApi(input.key); } }); function fetchApi(word) { let url = `https://api.dictionaryapi.dev/api/v2/entries/en/${word}`; fetch(url).then(res => res.json()).then(result => data(result, word)); } function data(result, word) { if (input.key == word) { characters += input.key; text.innerHTML = characters; } else { text.innerHTML = anotherFunction(); } } <p id="text"></p>Espero haber entendido bien tu pregunta, pero creo que lo que quieres es:
<input> o <textarea> deseado en lugar del document . Explicado aquí text.addEventListener('keydown', function(input) { if (input.key >= 'a' && input.key <= 'z') { fetchApi(input.key); } });Enter . Para esto, puede simplemente obtener el valor de <input> y enviarlo directamente a la API ( text.value ). O si desea filtrar los caracteres antes (y cambiar la menor cantidad de código posible de su solución existente), también puede enviarle su cadena de characters . (Como el código de abajo) let inputWord = "" text.addEventListener('keydown', function(input) { if (input.key >= 'a' && input.key <= 'z') { inputWord += input.key; // add each character to string if it's between az } else if (input.key === "Enter") { // on enter fetch the entire inputWord fetchApi(inputWord); inputWord = "" // clear inputWord after Enter (but not in <input>) } });