禁用"提交"按钮,直到使用 JavaScript 填充必填字段



我正在尝试禁用表单提交按钮,直到填写必填字段。但是,我的代码似乎没有正确循环通过条件,因为任何输入都会启用提交按钮。https://codepen.io/ldanneman/pen/MWyGJMx?editors=0010

<form>
<div class="form-box">
<label for="fname">First Name<span>*</span></label>
<input type="text" id="fname" name="First Name" placeholder="First Name" required><br>
<label for="lname">Last Name</label>
<input type="text" id="lname" name="Last Name" placeholder="Last Name"><br>
<label for="email">Email<span>*</span></label>
<input type="email" id="email" name="Email" placeholder="abc@client.com" required><br>
<label for="phone">Phone<span>*</span></label>
<input type="tel" id="phone" name="Phone" placeholder="111-222-3333" required><br>
<label for="comments">Comments<span>*</span></label>
<textarea id="comments" name="comments"  placeholder="Comments" required></textarea><br>

<button class="submit" type="submit">Submit</button>
</div>


</form>
</div>

JavaScript:

let requiredInputs = document.querySelectorAll("[required]");
let submitButton = document.querySelector(".submit");
submitButton.disabled = true;
for(let i = 0; i < requiredInputs.length; i++){
requiredInputs[i].addEventListener("input", buttonState)
};
function buttonState() {
if (requiredInputs.value === "") {
submitButton.disabled = true;
} else {
submitButton.disabled = false;
}
}

你很接近,但回调中的代码buttonState()不足以完成你想要的。 它正在检查 requiredInputs 的值,该值是 HTML 输入元素的集合。 您要做的是遍历该集合中的每个项,并检查是否设置了它们的值:

function buttonState() {
submitButton.disabled = Array.from(requiredInputs).some(x => x.value === '');
}

上面的代码将使用some()如果任何回调结果为 true,则返回 true,如果输入的值为空字符串。

相关内容

  • 没有找到相关文章

最新更新