问题描述
我正在开发Ionic / Cordova应用程序,在处理Samsung设备的数字输入时遇到一些问题,当 ,它们根本 。 如果它是本机应用程序,则可以使用numberDecimal类型,但是在HTML中找不到类似的输入类型。 为了解决这个问题,我决定创建一个简单的Angularjs指令,因此掩码可以自动放置小数点分隔符:
angular.module('number.mask', [])
.directive('numberMask', function () {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
element.on('focus',function(){
this.value = this.value;
});
element.on('keyup',function(event){
if (ctrl.$isEmpty(ctrl.$viewValue)) {
return ctrl.$viewValue;
}
var newValue=ctrl.$viewValue;
if(event.keyCode=== 8)
newValue/=10;
else if(newValue.toString().indexOf('.')===-1 && newValue.toString().indexOf(',')===-1)
newValue/=100;
else
newValue*=10;
newValue=parseFloat(Math.round(newValue * 100) / 100).toFixed(2);
ctrl.$setViewValue(newValue);
ctrl.$render();
});
}
};
});
我快到了,但是,当我按下退格按钮时,什么也没有触发。 其他所有按钮(包括粘贴按钮)至少会触发keydown和keyup,但退格键不会触发这些按键,也不会触发按键。 所以问题是,当在Android虚拟键盘中点击退格按钮时,如何监听事件?
1楼
Filipe Teixeira
0
2015-07-25 18:37:28
这可能使用锤子杀死苍蝇,但一种方法是使用触摸库,例如, 捕获所有事件并触发简单的触摸事件。 对于处理某些触发触摸事件的设备也很有用。 就我而言,我必须使用它,因为Android 4.4.x设备奇怪地触发了触摸事件。