【问题标题】:AngularJS ngChange trigger onblurAngularJS ngChange 触发 onblur
【发布时间】:2013-10-27 16:40:33
【问题描述】:

对于ng-Change,有没有办法仅在blur 上触发它? 类似于 jquery on('change')?

我正在寻找一种纯粹的angular 方式来做到这一点。

【问题讨论】:

    标签: angularjs angularjs-directive


    【解决方案1】:

    使用ng-model-options

    $scope.onchange = function () {}
    
    <input type="text" ng-model="x" ng-change="onchange()" ng-model-options="{updateOn: 'blur'}"/>
    

    【讨论】:

    • 确实节省了时间,这应该是正确的答案。
    【解决方案2】:

    release 1.2.0rc1 开头有一个ng-blur 指令

    jsfiddle:http://jsfiddle.net/9mvt8/6/

    HTML:

    <div ng-controller="MyCtrl">
        <input type='text' ng-blur='blurCount = blurCount + 1'/>
    
        <input type='text' ng-blur='blurCount = blurCount + 1' />
    
        blur count: {{blurCount}}
    </div>
    

    脚本:

    function MyCtrl($scope) {
        $scope.blurCount = 0;
        $scope.name = 'Superhero';
    }
    

    【讨论】:

    • 这不是我想要的,如果我没有更改值但失去了该字段的焦点,它仍然会触发该功能
    • 您将在模糊处理程序中自己处理。如果值发生变化,做你需要做的,否则什么都不做。
    • 这个官方将避免需要处理模糊处理程序内部的更改逻辑:
    • 这是一个更优雅的解决方案。但它仅适用于 v1.3(仍处于测试阶段)。
    【解决方案3】:

    如果您使用 ng-blur,然后(如 Jason 所说)使用处理程序检查输入 class="ng-dirty",则会告诉您输入值是否已更改。

    【讨论】:

    • ng-dirty 用于整个表单,而不仅仅是一个输入框。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2014-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2021-04-18
    相关资源
    最近更新 更多