Uncaught ReferenceError: myFunction is not defined at HTMLInputElement.onkeyup

Uncaught ReferenceError: myFunction is not defined at HTMLInputElement.onkeyup

基本相同 https://www.w3schools.com/tags/tryit.asp?filename=tryhtml5_ev_onkeyup

但由于某种原因我收到此错误。

HTML

<nb-card>
  <nb-card-header>
    Enter your name: 
  </nb-card-header>
  <nb-card-body>
    <input type="text" id="fname" onkeyup="myFunction()">
  </nb-card-body>
  <script>
    function myFunction() {
      var x = document.getElementById("fname");
      x.value = x.value.toUpperCase();
    }
    </script>
</nb-card>

没有星云库的同样错误: HTML

<html>
<body>
  Enter your name: 
  <input type="text" id="fname" onkeyup="myFunction()">

  <script>
    function myFunction() {
      var x = document.getElementById("fname");
      x.value = x.value.toUpperCase();
    }
  </script>
</body>
</html>

有谁知道为什么?谢谢。

我已经尝试了很多其他的堆栈溢出解决方案,但它们都不起作用。我希望不要使用 JQuery。这应该有效,但没有。我按照其他 W3 School 示例进行操作并得到相同的错误。

您的代码在这里似乎工作正常。有什么问题?

<nb-card>
  <nb-card-header>
    Enter your name: 
  </nb-card-header>
  <nb-card-body>
    <input type="text" id="fname" onkeyup="myFunction()">
  </nb-card-body>
  <script>
    function myFunction() {
      var x = document.getElementById("fname");
      x.value = x.value.toUpperCase();
    }
    </script>
</nb-card>

这不是 AngularJS 中的编码方式。利用平台的 baked-in 功能 - 就像使用 ng-click, ng-model and ng-keyup

在这种情况下,我认为解决方案就像使用 CSS class 强制大写一样简单,但我仍然希望这对您有所帮助。

angular.module('myApp', [])
  .controller('myCtrl', ['$scope', '$http', function($scope, $http) {
    $scope.fname = "";
    $scope.myFunction = function() {
      console.log($scope.fname)
    }
  }]);
.ucase {
  text-transform: uppercase;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
<div ng-app="myApp" ng-controller="myCtrl">
  <nb-card>
    <nb-card-header>
      Enter your name:
    </nb-card-header>
    <nb-card-body>
      <input type="text" ng-model="fname" class='ucase' ng-keyup="myFunction()">
    </nb-card-body>
  </nb-card>
</div>