我想在输入填充时启用我的按钮。我想用纯Javascript来做。
我在HTML中的代码示例:
<form action="sent.php" method="post" name="frm">
<input type="text" name="name_input" id="name" onkeyup="myFunction()"><br>
<button type="submit" class="button button-dark" id="send">Send message</button>
</form>
和Javascript:
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById('send').disabled = "true";
function myFunction() {
var nameInput = document.getElementById('name').value;
if (!nameInput === "") {
document.getElementById('send').disabled = "false";
}
}
});
我不知道为什么我的按钮在填充输入内容后没有改变以启用状态。我尝试过不同的方法,但它仍然无法正常工作。 请帮忙。
答案 0 :(得分:7)
仅当disabled
属性不存在时,才会启用HTML中的输入元素。
在您的情况下,disabled
始终存在于您的元素中,只是它有一个&#34; false&#34;或者&#34; true&#34;价值 - 但根据规格(http://www.w3schools.com/tags/att_input_disabled.asp)
所以你需要完全删除它:
document.getElementById('send').removeAttribute('disabled')
答案 1 :(得分:2)
您的代码存在的问题是myFunction()
不可用,因为您在eventlistener中将其定义为click。
完整的重构代码答案:
HTML
<form action="sent.php" method="post" name="frm">
<input type="text" name="name_input" id="name">
<br>
<button type="submit" class="button button-dark" id="send" disabled>Send message</button>
</form>
JS
document.getElementById("name").addEventListener("keyup", function() {
var nameInput = document.getElementById('name').value;
if (nameInput != "") {
document.getElementById('send').removeAttribute("disabled");
} else {
document.getElementById('send').setAttribute("disabled", null);
}
});
答案 2 :(得分:0)
尝试这个适用于你的
function myFunction() {
document.getElementById('send').disabled = true;
var nameInput = document.getElementById('name').value;
if (nameInput != "") {
alert("Empty");
document.getElementById('send').disabled = false;
}
}
如果要检查输入不应该包含数字那么我们可以使用isNaN()函数,如果number不是数字则返回true,否则返回false
答案 3 :(得分:0)
您的代码几乎正确,但您已在块中定义myFunction
,因此input
无法在myFunction()
onkeyup="myFunction()"
所以在DOMContentLoaded
事件
参见 demo
document.addEventListener("DOMContentLoaded", function(event) {
document.getElementById('send').disabled = "true";
});
function myFunction() {
var nameInput = document.getElementById('name').value;
console.log(nameInput);
if (nameInput === "") {
document.getElementById('send').disabled = true;
} else {
document.getElementById('send').disabled = false;
}
}