我搜索了超过三天的解决方案。我找到了一个堆栈答案Stack Ans和他的JSFiddle JSFiddle,100%适用于桌面,99%适用于移动版本。示例代码:
<input type="text" class="numeric" />
$('.numeric').on('input', function (event) {
this.value = this.value.replace(/[^0-9]/g, '');
});
查看移动设备中的jsfiddle链接并自行测试,测试用例:提供输入值为12345
,然后按spacebar twice
它removes 5
,接下来两次空格键removes 4
。怎么解决这个?
以下代码适用于桌面浏览器,而不适用于移动浏览器,因为无法识别密钥代码。
$(".numeric").on("keypress", function (event) {
if ((event.which < 48 || event.which > 57)) event.preventDefault();
});
测试视频日志:Video Log Bug Report
我找到了解决问题的方法,
$('.NumOnly').on('input', function (event) {
if (this.value.indexOf(' ') < 0) {
this.value = this.value.trim().replace(/[^0-9]/g, '');
if (!CheckLength(event.target.maxLength, $("#" + event.target.id).val())) {
event.returnValue = false;
return false;
}
}
else this.value = this.value.trim();
});
我使用indexOf(' ')
检查输入值是否有空格。如果结果> = 0则trim()
值,否则replace
使用基于正则表达式的验证。