禁用文本输入 - 使用jquery设置角度

时间:2015-12-03 11:07:52

标签: angularjs controller

在这里找到这些完美的解决方案:Example

// Catch all events related to changes
$('#textbox').on('change keyup', function () {
    // Remove invalid characters
    var sanitized = $(this).val().replace(/[^-.0-9]/g, '');
    // Remove non-leading minus signs
    sanitized = sanitized.replace(/(.)-+/g, '$1');
    // Remove the first point if there is more than one
    sanitized = sanitized.replace(/\.(?=.*\.)/g, '');
    // Update value
    $(this).val(sanitized);
});

HTML

<input type="text" id="textbox" />

但是我无法在控制器内完成这项工作。

怎么做?

1 个答案:

答案 0 :(得分:0)

您可以做的一件事就是在输入中使用ng-change,如下所示:

<div ng-controller="yourCtrl as ctrl">
    <input type="text" id="textbox" ng-change="ctrl.doSomething()" ng-model="ctrl.someVar">
</div>

通过这种方式,您可以访问控制器内部的输入值,如下所示:

angular.module('yourModule').controller('yourCtrl',[function(){
    var self = this;

    self.doSomething = function(){
        //you can access the value of the input using
        // self.someVar
    }
});

ng-change(官方文档:https://docs.angularjs.org/api/ng/input/input%5Btext%5D)是“当输入因用户与输入元素的交互而发生变化时执行”。

您还可以使用“基于keyup评估”的ngKeyup(官方文档:https://docs.angularjs.org/api/ng/directive/ngKeyup)如何将其连接到函数与ng-change相同。你只需要选择其中一个。