我想将带有浮点值的文本输入字段限制为2位小数。我使用了keyup事件:JSFiddle
$("body").keyup(function(e) {
if ($(e.target).attr("id") == "number") {
var value = $("#number").val();
var decimalPointPosition = value.indexOf(".");
if (decimalPointPosition >= 0) {
var decimalCount = value.substring(decimalPointPosition + 1).length;
if (decimalCount >= 2) {
$("#number").val(value.substring(0, value.length - (decimalCount - 2)));
}
}
}
});
但缺点是,这种解决方案的“闪烁”。因此,如果我键入第3个十进制数字,它首先显示第3个数字,然后再次将其删除,因此看起来不太好。 当使用按键事件时,我没有inout字段的新值只是事件中的新键。无论如何将输入值限制为除了keyup事件之外的2位十进制数字吗?
由于
哈德
答案 0 :(得分:0)
我认为这是唯一的方法..
https://jsfiddle.net/yhb3d0hr/
$("body").keypress(function(e) {
if ($(e.target).attr("id") == "number") {
var value = $("#number").val();
var decimalPointPosition = value.indexOf(".");
if (decimalPointPosition >= 0) {
var decimalCount = value.substring(decimalPointPosition).length;
if (decimalCount >= 2) {
$("#number").val(value.substring(0, value.length - (decimalCount - 2)));
}
}
}
});
答案 1 :(得分:0)
我正在尝试多一点,关键点是获得光标位置,使用光标位置和输入的字符,可以“预测”输入的输入值。 所以在我的情况下,当输入已经输入2个十进制数字时,我不允许更多的十进制数字,但是可以在小数点之前添加数字。 JsFiddle:https://jsfiddle.net/nu73zxys/4/
$("#number").keypress(function(e) {
var value = $("#number").val();
if (e.which >= 48 && e.which <= 57) {
var decimalPointPosition = value.indexOf(".");
if (decimalPointPosition >= 0) {
var decimalCount = value.substring(decimalPointPosition + 1).length;
if (decimalCount == 2 && $("#number").getCursorPosition() > decimalPointPosition) {
e.preventDefault();
}
}
}
});