【问题标题】:Two function calls on input field, one onBlur and one not in Angular输入字段上的两个函数调用,一个 onBlur 和一个不在 Angular 中
【发布时间】:2016-05-16 16:34:41
【问题描述】:

我有一个预先输入字段,其中包含两个要触发的功能。一个应该是模糊的,这是该领域的验证。另一个应该是用户类型,这是函数uib-typeaheaduses。

现在我正在使用ng-model-options="{ updateOn: 'blur' }",但它不会在用户键入时触发预先输入。

有没有办法让验证函数触发 onBlur 和 typeahead 正常触发?

例如,我调用了一个我想在 blur 上调用的指令 number-validation。然后在 typeahead 中我想调用 triggerfunction 作为用户类型。

                          <input
                           number-validation
                           type="text"
                           maxlength="10"
                           class="form-control input-sm"
                           ng-model="number"
                           ng-change="number.elsewhere = null"
                           required
                    uib-typeahead="number for number in triggerfunction($viewValue)"
                    typeahead-template-url="/template.html"
                    typeahead-loading="Loadinglocations" typeahead-on-select="SelectFunction($item, 1)" typeahead-wait-ms="3"
                    typeahead-min-length="3">

【问题讨论】:

    标签: javascript angularjs validation angular-ngmodel angular-ui-typeahead


    【解决方案1】:

    对于“模糊”,您可以使用“ng-blur”。对于提前输入功能,请使用“ng-keyup”。

    这里有一个例子......

    https://jsfiddle.net/eh2morxb/

    还有,这里是代码...

    <input type="text" ng-model="inputText" ng-blur="blurHandler()" ng-keyup="typeAhead()" placeholder="Type something...">
    
    angular.module("myApp", []).controller("myController", ["$scope", function($scope) {
      $scope.inputText = "";
      $scope.typeAheadMessage = "";
      $scope.blurMessage = "";
    
      $scope.blurHandler = function() {
        $scope.blurMessage = "Perform input validation on " + $scope.inputText;
      };
    
      $scope.typeAhead = function() {
        $scope.typeAheadMessage = "Perform type-ahead lookup on " + $scope.inputText;
      };
    }])
    

    【讨论】:

    • 这个句柄会调用指令吗?我已经更新了我的问题以提供一个示例。
    • 这取决于指令。您实际上并没有调用指令,它们根据它们的设计方式行事。对于自定义验证指令,您可能希望将其绑定到 $parsers 集合。 Angular 负责其余的工作。
    • 我已经有一个有效的自定义验证,我希望它触发 onBlur。这适用于 ng-model-options,但显然不适用于 ng-blur。将它绑定到 $parsers 将无济于事,因为每当用户更改值时都会调用 $parsers。
    • 如果你有使用 ng-model-options 的模糊功能,我会假设你可以简单地坚持使用该方法并添加 ng-keyup 用于预先输入。是否可以创建一个包含您的自定义验证的小提琴?
    • 这种方法是有意义的,除了 typeahead 已经在使用 uib-typeahead。我不知道如何在此之上还包含 ng-keyup。自定义验证只是检查数字是否有效,如果不是,它会打开一个新窗口。
    【解决方案2】:

    您可以利用ng-blurdirective 在模糊https://docs.angularjs.org/api/ng/directive/ngBlur 上触发事件

    【讨论】:

    • 我知道如何在模糊时触发某些东西。我不想在模糊时触发这两个功能,只有一个。我添加了一个示例来演示/
    猜你喜欢
    • 2019-10-18
    • 2017-12-27
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2018-11-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多