javascript - Javascript禁用按钮,直到3个或更多输入字段具有值
问题描述
我的 html 页面中有 6 个输入字段,如下所示:
<div class='inputBox'>
<form action="/" method="post">
<div>
<label>Angle of A = </label>
<input class='field' autocomplete="off" autofocus name="A" type="number">
</div>
<div>
<label>Angle of B = </label>
<input class='field' autocomplete="off" autofocus name="B" type="text">
</div>
<div>
<label>Angle of C = </label>
<input class='field' autocomplete="off" autofocus name="C" type="text">
</div>
<div>
<label>Side Length of a = </label>
<input class='field' autocomplete="off" autofocus name="a" type="text">
</div>
<div>
<label>Side Length of b = </label>
<input class='field' autocomplete="off" autofocus name="b" type="text">
</div>
<div>
<label>Side Length of c = </label>
<input class='field' autocomplete="off" autofocus name="c" type="text">
</div>
<div>
<button id='calculate' disabled="true" class='field' type="submit">Calculate</button>
</div>
</form>
</div>
我希望禁用该按钮,直到 6 个字段中的任何 3 个字段具有值。这是我的javascript代码:
function enableButton()
{
var filled = 0;
var fields = [...document.getElementsByClassName("field")];
for (var i = 0; i < 6; i++)
{
if (fields[i].length() > 0)
{
filled += 1;
}
}
if (filled >= 3)
{
document.getElementById("calculate").disabled = false;
}
else
{
document.getElementById("calculate").disabled = true;
}
}
不幸的是,尽管具有值的字段数量很多,但该按钮仍处于禁用状态。
解决方案
尝试对输入字段使用更改事件,我使用onkeyup
函数来调用该enableButton
函数。而不是检查fields[i].length()
尝试检查是否fields[i].value
存在。这是一个工作示例。
function enableButton() {
var filled = 0;
var fields = [...document.getElementsByClassName("field")];
for (var i = 0; i < 6; i++) {
if (fields[i].value) {
filled += 1;
}
}
if (filled >= 3) {
document.getElementById("calculate").disabled = false;
} else {
document.getElementById("calculate").disabled = true;
}
}
<div class='inputBox'>
<form action="/" method="post">
<div>
<label>Angle of A = </label>
<input class='field' autocomplete="off" autofocus name="A" type="number" onkeyup="enableButton()">
</div>
<div>
<label>Angle of B = </label>
<input class='field' autocomplete="off" autofocus name="B" type="text" onkeyup="enableButton()">
</div>
<div>
<label>Angle of C = </label>
<input class='field' autocomplete="off" autofocus name="C" type="text" onkeyup="enableButton()">
</div>
<div>
<label>Side Length of a = </label>
<input class='field' autocomplete="off" autofocus name="a" type="text" onkeyup="enableButton()">
</div>
<div>
<label>Side Length of b = </label>
<input class='field' autocomplete="off" autofocus name="b" type="text" onkeyup="enableButton()">
</div>
<div>
<label>Side Length of c = </label>
<input class='field' autocomplete="off" autofocus name="c" type="text" onkeyup="enableButton()">
</div>
<div>
<button id='calculate' disabled="true" class='field' type="submit">Calculate</button>
</div>
</form>
</div>
推荐阅读
- python - deg 在 np.polyfit numpy 中做了什么
- excel - 如果条件不匹配,则给出下拉列表
- java - 如何从 4,000,000,000 个号码中获得最常见的 100 个号码?
- c# - 为 POST 和 PUT 请求获取有效负载为空
- c++ - 为什么添加 hlsl/fx 文件后 Visual Studio 无法找到我的 main 函数?
- javascript - 如何从 Admin Directory 中获取 Employee Title?
- php - 通过nodejs或者php访问这个地址被阿里云屏蔽了,如何在nodejs或者php中访问这个链接的正确返回值?
- python - Ubuntu 20.04LTS GUI 上的 Pynput 和 Pyinstaller 问题
- python - Django Websockets 数据到错误的套接字
- python - 网络爬虫 LinkedIn 用户