我如何获得type =" text"当用户删除他们键入的内容时禁用该功能?

时间:2017-04-27 05:23:52

标签: javascript html

这就是我所拥有的,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>

1 个答案:

答案 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)">

当然,这不会回应使用拖入或移出输入的菜单或文字剪切或粘贴的值。

为什么不将其设为只读并将值设置为转换后的温度,而不是禁用其他输入?