我一直在尝试许多解决方案,但基本上,我需要输入一个可以插入整数(但不能插入小数)的输入,但还要始终将小数部分显示为“,00”。我一直在尝试没有运气的jquery-inputmask,也一直在玩事件,但只是事件太多而无法覆盖。这将花费很长时间,最终可能是2或2的风险解决方案由于复制和粘贴数字而产生3个错误,请使用箭头键前后移动。不用说游标,总是将游标放在数字的末尾而不能更改小数。
我的jquery解决方案是这样的:
$('input[type="text"]').keyup(function(event){
//In here I check for the user not to insert any period or comma's, as it will always be an integer at the end, also no spaces or letters
if (event.which == 32 || !(event.which >= 48 && event.which <= 57) && !(event.which >= 96 && event.which <= 105))
return false;
//In here I say if the text already have a comma, then check if the value is larger than zero, then add ",00" and set the cursor to the end of the integer part
if(!(this.value.indexOf(',') != -1)){
if(accounting.unformat(this.value, ',') >= 0){
this.value = this.value + ',00';
this.setSelectionRange(this.value.length - 3, this.value.length - 3);
}
}
});
如您所见,要获得完全正确的用户体验,它已经需要很多条件,因此,我尝试并使用了jquery-inputmask,并说了类似的话:
$('input').inputmask('currency', {
prefix: '',
radixPoint: ',',
allowPlus: false,
allowMinus: false,
showMaskOnHover: false,
showMaskOnFocus: false,
clearMaskOnLostFocus: true,
rightAlign: false,
clearMaskOnLostFocus: true
});
这是一个非常好的解决方案,尽管它仍然允许我更改小数。然后,我尝试了另一种方法,即将其视为小数而不是货币,然后删除小数,并向其添加后缀“ 0,00”,如下所示:
$('input[type="text"]').inputmask('decimal', {
prefix: '',
suffix: ',00', // Adding digits here...
radixPoint: ',',
allowPlus: false,
allowMinus: false,
showMaskOnHover: false,
showMaskOnFocus: false,
clearMaskOnLostFocus: true,
rightAlign: false,
clearMaskOnLostFocus: true,
digits: 0 // removing digits here...
});
这行得通,但是,一旦我尝试输入一个欧洲数字,例如:1.234,00,就不允许在文本框中输入该数字。更糟糕的是,如果我尝试输入逗号“,”它就会开始变得疯狂并创建很多带有逗号的数字。
我正在使用此插件: https://github.com/RobinHerbots/Inputmask
有人以前有这种情况吗?
谢谢!