javascript - 当值突出显示时,允许用户在仅数字字段中输入小数点作为第一个字符 JavaScript
问题描述
我的输入字段有一个函数,它只允许数字值、一个小数点、小数点后的两个十进制值、退格键和删除键。用户还可以键入 0.5 或 5。这将更新为 0.5 / 5.00 onBlur。我当前的问题是当整个字段值被高亮时,用户不能将小数点作为第一个字符,
他们必须先按删除/退格键,然后才能输入小数点(句点键)作为第一个字符。这是我想在这种情况下删除的一个额外按键。我希望在这种情况下可以键入 0.5,而不必先删除该值(功能请求)。
这是我目前的实现
function validateFloatKeyPress(el, evt) {
var charCode = (evt.which) ? evt.which : event.keyCode;
var number = el.value.split('.');
//allow backspace
if (charCode == 8 ) {
return true;
}
//numbers only
if (charCode != 46 && charCode > 31 && (charCode < 48 || charCode > 57)) {
return false;
}
if (number.length > 1 && charCode == 46 ) {
return false;
}
//get the carat position
//2 decimal values after decimal point (and only one decimal character)
var caratPos = getSelectionStart(el);
var dotPos = el.value.indexOf(".");
if (caratPos > dotPos && dotPos > -1 && (number[1].length > 1)) {
return false;
}
return true;
}
function getSelectionStart(o) {
return o.selectionStart
}
当字段突出显示时,键入 5. 之类的值不是问题。它按预期工作。只有当“。” 是在这种情况下出现问题的第一个键入的字符。
我如何包含charCode == 190 && charCode == 110
以便可以随时输入它们(无论字段是否突出显示,但只有一次)
尝试 Daut 的建议
$(document).ready(function () {
$("input:text, form").on('keydown', function (e) {
if ((e.keyCode == 190 || e.keyCode == 110)) {
this.value = "0.";
}
});
});
这种尝试允许在突出显示的值上键入一个小数点,但是即使在 on 键入了 5 时,每个输入都会发生这种情况。然后它将恢复为 0。,我怎样才能过滤掉它,只在小数点是输入的第一个字符..
解决方案
推荐阅读
- javascript - JavaScript 类型编写器效果从 onclick 更改为 onload
- javascript - 如何在文本区域中显示来自服务器的数据
- javascript - 在Vue Js的表格中创建奇数和偶数单元格的问题
- python - 排列numpy数组
- c++ - 如何在向量队列或向量向量上使用 std::async 进行排序?
- java - 快速排序稳定性演示
- ffmpeg - 如何在混合视频流时设置 sample_aspect_ratio?
- laravel - Laravel 我可以在资源控制器上添加两个更新方法吗
- reactjs - How to test condition with Jest in React-Native app
- python - Pandas:基于两个列值创建一个新列