在这里找到这些完美的解决方案: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" />
但是我无法在控制器内完成这项工作。
怎么做?
答案 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相同。你只需要选择其中一个。