【问题标题】:What is the difference between the two given scenarios?两个给定场景之间有什么区别?
【发布时间】:2019-09-13 09:48:57
【问题描述】:

我有一段 html 和 Javascript 代码,其中两种情况不同:

<!DOCTYPE html>
<html>
<body>

<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />

<input type="number" onkeydown="checkForNumber(event)" />

</form>


</body>

<script>
  function checkForNumber(event) {

    if (event.keyCode === 8 || event.keyCode === 46 ) {

      return true;
    } else {
      return !isNaN(Number(event.key));
    }

  }
</script>
</html>

第一个输入类型按预期工作,即它只允许数值。但是当我将 onkeydown 东西移动到一个函数然后试图调用它没有按预期工作时,即它允许我输入一些字符,如'e'、'-'、'+'、'。 ... .
这两者有什么区别?以及如何通过函数调用实现第一个场景?

【问题讨论】:

  • 知道如何以角度实现它吗?因为在 Angular 中,如果我们在 html 模板中使用“return”,“return”语句会给出错误。

标签: javascript html angular dom-events


【解决方案1】:

在第一个示例中,onkeydown 函数有一个 return 语句。

在第二个示例中,onkeydown 函数没有return 语句。 (它调用checkForNumber 并丢弃返回值)。

【讨论】:

  • 谢谢哥们!!知道如何在 Angular 中实现它,因为 Angular html 不允许返回语句?
【解决方案2】:

您没有返回第二种输入类型的任何内容。将您的代码更新为

 <input type="number" onkeydown="return checkForNumber(event)" />

<!DOCTYPE html>
<html>
<body>

<input type="number" onkeydown="javascript: return event.keyCode === 8 || event.keyCode === 46 ? true : !isNaN(Number(event.key))" />

<input type="number" onkeydown="return checkForNumber(event)" />

</form>


</body>

<script>
  function checkForNumber(event) {

    if (event.keyCode === 8 || event.keyCode === 46 ) {

      return true;
    } else {
      return !isNaN(Number(event.key));
    }

  }
</script>
</html>

【讨论】:

  • 谢谢哥们!!知道如何在 Angular 中实现它,因为 Angular html 不允许返回语句?
【解决方案3】:

要使用函数调用实现相同的功能,需要在函数调用之前添加return关键字

<input type="number" onkeydown="return checkForNumber(event)" />

【讨论】:

  • 谢谢哥们!!知道如何在 Angular 中实现它,因为 Angular html 不允许返回语句?
猜你喜欢
  • 1970-01-01
  • 2013-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-02
相关资源
最近更新 更多