【发布时间】:2019-02-06 17:30:05
【问题描述】:
我想禁用submit 按钮,直到所有文本inputs 都被填满。我下面的代码示例不起作用。
实现这一目标的最简单和最惯用的方法是什么,我缺少什么?
const form = document.forms[0]
const inputs = form.querySelector("fieldset > *")
const submit = form.querySelector("[type=submit]")
inputs.addEventListener("change", () => {
if (!inputs.length) {
submit.disabled = true
} else {
submit.disabled = false
}
})
<form>
<fieldset>
<input type="text" placeholder="John Doe" id="name"><br>
<input type="email" placeholder="john@example.com" id="email"><br>
<textarea placeholder="Lorem ipsum dolor sit amet." id="message"></textarea>
</fieldset>
<input type="submit" value="Submit">
</form>
我知道 Stack Overflow 上有很多关于此的问题和答案,但大多数都是不必要的复杂。
【问题讨论】:
-
您必须监听每个输入的变化,然后在发生变化时遍历输入以查看它们是否具有值,然后执行 if/else。
-
@FunkDoc 所以我应该从
inputs.forEach(input => {开始? -
或者只使用HTML5资源,给每个标签添加“required”属性。
-
@FabioManzano 我知道
required属性,但在这种情况下,我需要禁用submit按钮,直到文本inputs被填满。 -
您可以使用 oninput 触发一个通过输入 w3schools.com/jsref/event_oninput.asp 的函数
标签: javascript html forms ecmascript-6