【问题标题】:Right way to use && and || in javascript正确使用 && 和 ||在 JavaScript 中
【发布时间】:2019-02-21 13:44:26
【问题描述】:

我做了一个小的网络应用程序。并且想要在我按下“输入”时必须检查是否有空值或空格值。在这种情况下,我有“警报”。

所以我使用了事件监听器。但它工作不正确。当我不仅按下“输入”时,会出现警报。需要你的帮助!

const convert = document.getElementById('convert');

currentValue.addEventListener('keypress', function(event) {
  if (event.which === 13 && currentValue.value === '' ||
    currentValue.value === ' ') {
    alert('value is empty');
  } else {
    convertTemperature();
  }
}, false);
<div id="application">
  <input id="currentValue" type="number">
  <select id="select">
    <option value="celsius">Celsius</option>
    <option value="fahrenheit">Fahrenheit</option>
    <option value="kelvin">Kelvin</option>
  </select>
  </br>
  <button id="convert">Convert</button>
  </br>
  <input id="value1" type="text">
  </br>
  <input id="value2" type="text">
</div>

【问题讨论】:

  • 使用括号,例如event.which === 13 &amp;&amp; (currentValue.value === '' || currentValue.value === ' ')
  • @Federico klez Culloca,谢谢,它有效。但是当我开始打印一个数字时它就开始计算了。输入数字后如何计算?
  • 你应该把else改成else if (event.which === 13)

标签: javascript html button ecmascript-6


【解决方案1】:

&& 具有比 || 更高的优先级所以你必须为 || 添加 ()条件如下(currentValue.value === '' || currentValue.value === ' ')

const convert = document.getElementById('convert');

currentValue.addEventListener('keypress', function(event) {
    if (event.which === 13 )
       if(currentValue.value === '' || currentValue.value === ' ') {
          alert('value is empty');
      } else {   
            convertTemperature();
      }
}, false); 

【讨论】:

  • @Ahmed Yousif,谢谢。但是当我开始打印一个数字时它就开始计算了。输入数字后如何计算?
  • 在计算调用之前只需添加 if (event.which === 13) 我更新它你可以使用它
【解决方案2】:

请在下面试试这个

const convert = document.getElementById('convert');

currentValue.addEventListener('keypress', function(event) {
  if (event.which === 13) {
   if (currentValue.value === '' ||
    currentValue.value === ' ') {
    alert('value is empty');
  } else {
    convertTemperature();
  }
  }
}, false);
<div id="application">
  <input id="currentValue" type="number">
  <select id="select">
    <option value="celsius">Celsius</option>
    <option value="fahrenheit">Fahrenheit</option>
    <option value="kelvin">Kelvin</option>
  </select>
  </br>
  <button id="convert">Convert</button>
  </br>
  <input id="value1" type="text">
  </br>
  <input id="value2" type="text">
</div>

【讨论】:

  • 这说明什么 - 绝不只是发布代码。 OP 需要理解问题,而不是记住解决方案
【解决方案3】:

首先你需要一个form,所以你不需要关注按钮然后检查enter

在这种情况下,您只需要操作员。

function convertTemp(event) {
  event.preventDefault();
  let __key = event.keyCode || event.which,
    __ipVal = document.getElementById('currentValue').value;
  if (__ipVal === '' || __ipVal === ' ') {
    alert('value is empty');
  } else {
    console.log('Convert Temp')

  }
}
<div id="application">
  <form id='convertTempForm' onsubmit='convertTemp(event)'>
    <input id="currentValue" type="number">
    <select id="select">
      <option value="celsius">Celsius</option>
      <option value="fahrenheit">Fahrenheit</option>
      <option value="kelvin">Kelvin</option>
    </select>

    <button id="convert" type='submit'>Convert</button>
  </form>
  <div>
    <input id="value1" type="text">
  </div>
  <div>
    <input id="value2" type="text">
  </div>
</div>

【讨论】:

  • 谢谢你。你能说我如何以 JSON 格式输出结果吗?
猜你喜欢
  • 2014-05-29
  • 2022-12-31
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-17
相关资源
最近更新 更多