这就是我所拥有的,disableBox()函数禁用在输入内容时未使用的文本框。如何在用户删除键入的内容时启用禁用的文本框?
<!DOCTYPE html>
<html>
<head>
celsius:
<input type="text" id="fahrenheit" onkeypress="disableBox()"
onkeydown="enableBox()">
<br>
fahrenheit:
<input type="text" id="celsius" onkeypress="disableBox2()"
onkeydown="enableBox()">
<br>
<script>
var toFahrenheit = document.getElementById("celsius").value;
var toCelsius = document.getElementById("fahrenheit").value;
function disableBox() {
if (toFahrenheit = !null ) {
document.getElementById("fahrenheit").disabled = false;
document.getElementById("celsius").disabled = true;
}
}
function disableBox2() {
if (toCelsius = !null) {
document.getElementById("celsius").disabled = false;
document.getElementById("fahrenheit").disabled = true;
}
}
function enableBox() {
if (toFahrenheit = null ) {
document.getElementById("fahrenheit").disabled = false;
document.getElementById("celsius").disabled = false;
}
if (toCelsius = null ) {
document.getElementById("fahrenheit").disabled = false;
document.getElementById("celsius").disabled = false;
}
}
</script>
</head>
<body>
</body>
</html>
答案 0 :(得分:1)
最好使用keyup事件并决定是否根据其值启用或禁用其他输入,例如
function disableBox(el) {
// If value is not empty, disable all inputs except el
if (el.value != '') {
[].forEach.call(document.querySelectorAll('input'), function(input) {
input.disabled = !(input == el);
});
// Otherwise enable them all
} else {
[].forEach.call(document.querySelectorAll('input'), function(input) {
input.disabled = false;
});
}
}
celsius:
<input type="text" id="fahrenheit" onkeyup="disableBox(this)">
<br>
fahrenheit:
<input type="text" id="celsius" onkeyup="disableBox(this)">
当然,这不会回应使用拖入或移出输入的菜单或文字剪切或粘贴的值。
为什么不将其设为只读并将值设置为转换后的温度,而不是禁用其他输入?