如何使用angularJs选择所有输入元素

时间:2018-05-25 22:28:25

标签: angularjs input uppercase

我需要使用angularJs将所有输入的字符串转换为大写,我尝试使用jQuery并且它完美地工作但我不知道如何使用angularJs操纵元素。

pd。项目是在sigle页面制作的,所以我有很多控制器,我想在所有控制器上使用这个功能。  下面的代码是在“ng-run()”函数中编写的,它适用于所有项目,无论控制器是否正在使用(它在页面重新加载时都有效)。

    $("input").keyup(function() {
      this.value = this.value.toUpperCase();
    });

1 个答案:

答案 0 :(得分:0)

如果您只需要UI的大写字母而不是JS逻辑内部的任何内容,您可以在文本上使用an uppercase Filter

根据您输入的方式,您还可以执行诸如将功能添加到ng-change以进行输入之类的操作。请参阅ng-change here的文档。这也会将输入值更改为大写字母。

<input ng-model="txt" ng-change="txt = txt.toUpperCase()"/>
<h1>{{txt}}</h1>

如果您正在做一些比简单地大写文本更先进的事情,您可以使用ng-change中的函数而不是内联命令。 (无论如何我都推荐这种方式,因为它比内联JavaScript更容易调试。)

<input ng-model="txt" ng-change="makeCapital()"/>

makeCapital()看起来像这样:

$scope.makeCapital = function(){
    txt = txt.toUpperCase()
}

如果要创建大写文本的副本,但又不想编辑双向绑定的原始文本,则可以使用复制该文本的函数将变量绑定到第二个变量,然后更改该变量的大小写。

<input ng-model="txt" ng-change="makeCapitalCopy()" />

makeCapitalCopy()看起来像这样:

$scope.makeCapitalCopy = function() {
      $scope.capitalCopy = $scope.txt.toUpperCase();
      // This capitalCopy variable doesn't need to be on the $scope. 
      // If you're not going to display the value back on the view and just want to manipulate it internally, just declare it locally.
}

但是,对于后一种选择,取决于你的数据目标是什么,如果你想将输入反映回视图,我认为这是过度杀伤并且无法实现双向绑定。

Here is a Plunker showing all three of these.