如何从网格中的 contenteditable div 获取用户输入?
How to get user input from contenteditable div in a grid?
我一直在尝试创建一个 wordle 类型的游戏,但我不知道如何从 contenteditable div 中获取用户输入。我想要发生的是,如果用户输入字母 'a',例如,div 中的字母将变为绿色,而其他 div 中的其他字母则不同颜色.
所以基本上,当用户输入完每个字母进行猜测时,他们会点击回车键,字母 'a' 会变成绿色。 (在这种情况下这个词是绝对的)
此外,如果可能,请确保用户在使该功能成为可能之前实际填写了行中的所有框。
let word = "absolute";
function inputFunc() {
event.target.nextElementSibling.focus();
}
document.getElementById('amo1').addEventListener('keypress', function(e) {
document.getElementById('amo1').value = this.innerHTML;
});
这是我在 JSFiddle 中的完整代码,包括所有 div、CSS、HTML 和 JS 代码:https://jsfiddle.net/Infui/c7q30gez/1/
https://codepen.io/codmitu/pen/LYegzNN?editors=0011
html:
<p>absolute</p>
<div contenteditable="true" style="border: 5px solid; padding: 5px"></div>
<button>check</button>
js:
const pText = document.querySelector("p").innerText
const div = document.querySelector("div")
const button = document.querySelector("button")
button.addEventListener("click", () => {
const text = div.textContent
//checking for numbers
if (text.match(/\d/gi)) {
div.innerText = text
return
}
div.innerHTML = ""
text.split("").forEach(letter => {
if (pText.includes(letter)) {
div.innerHTML += `<span style="color: green">${letter}</span>`
} else {
div.innerHTML += `<span style="color: grey">${letter}</span>`
}
})
})
//blur the div if text is longer than 8 letters
div.addEventListener("keydown", (e) => {
if (div.innerText.length > 7 || e.keyCode == 32) {
div.blur()
}
})
//clear on focus
div.addEventListener("focus", () => {
div.innerHTML = ""
})
我一直在尝试创建一个 wordle 类型的游戏,但我不知道如何从 contenteditable div 中获取用户输入。我想要发生的是,如果用户输入字母 'a',例如,div 中的字母将变为绿色,而其他 div 中的其他字母则不同颜色.
所以基本上,当用户输入完每个字母进行猜测时,他们会点击回车键,字母 'a' 会变成绿色。 (在这种情况下这个词是绝对的) 此外,如果可能,请确保用户在使该功能成为可能之前实际填写了行中的所有框。
let word = "absolute";
function inputFunc() {
event.target.nextElementSibling.focus();
}
document.getElementById('amo1').addEventListener('keypress', function(e) {
document.getElementById('amo1').value = this.innerHTML;
});
这是我在 JSFiddle 中的完整代码,包括所有 div、CSS、HTML 和 JS 代码:https://jsfiddle.net/Infui/c7q30gez/1/
https://codepen.io/codmitu/pen/LYegzNN?editors=0011
html:
<p>absolute</p>
<div contenteditable="true" style="border: 5px solid; padding: 5px"></div>
<button>check</button>
js:
const pText = document.querySelector("p").innerText
const div = document.querySelector("div")
const button = document.querySelector("button")
button.addEventListener("click", () => {
const text = div.textContent
//checking for numbers
if (text.match(/\d/gi)) {
div.innerText = text
return
}
div.innerHTML = ""
text.split("").forEach(letter => {
if (pText.includes(letter)) {
div.innerHTML += `<span style="color: green">${letter}</span>`
} else {
div.innerHTML += `<span style="color: grey">${letter}</span>`
}
})
})
//blur the div if text is longer than 8 letters
div.addEventListener("keydown", (e) => {
if (div.innerText.length > 7 || e.keyCode == 32) {
div.blur()
}
})
//clear on focus
div.addEventListener("focus", () => {
div.innerHTML = ""
})