gpt4 book ai didi

javascript - Jquery Masked Input 插件允许点

转载 作者:搜寻专家 更新时间:2023-11-01 04:42:25 24 4
gpt4 key购买 nike

我正在使用 JQuery Masked 输入插件。

$("#percent").mask("99.99?9");

这允许像 10.999, 10.99, 01.999, 01.99 这样的数字

我想要实现的是我不希望用户键入 01.99。相反,如果用户键入 1.99,我希望在 1 之前自动添加 0。这就是我开始但不知道如何继续的方式:

  //assume i typed in field 11.99
$(document).on('keyup', '#percent', function(evt) {
var input = $(this).val();
alert(input); // 11.99_
if(evt.which == '190' || evt.which == '110') {
//if dot is clicked
alert(parseInt(input)); // 11
}
});

请注意,由于第三个值是可选的,我没有输入它,因此警报输入会在末尾打印下划线 11.99_

现在这个值是完全正常的,但如果用户输入 1.99,将无法输入,因为它会自动将 9 移向 1 以填充它最多为 2 位,因此它将返回为 19.9,这是无效的,因为必须有 2 小数,如上定义。因此,在我的 if 语句中,我希望能够检测输入的内容是否小于 10,如果小数点小于 10,则添加 0 开头。

好的,我找到了 underscore _ 的修复方法:

    $("#percent").mask("99.99?9", {placeholder: ""})

但仍然没有解决输入 1.9919.9

的其他问题

最佳答案

您可以拦截 keydown 来执行此操作,但您需要一些方法来刷新插件状态。

下面的代码可以工作:

$("#percent").bind({
keydown: function(e) {
// custom handler for dot
var userInput = parseFloat($("#percent").val());
if(e.which == '190' || e.which == '110') {
// if entered number is integer and less than 10
if(userInput % 1 === 0 && userInput < 10) {
// prevent default mask input handlers from calling
e.preventDefault();
e.stopImmediatePropagation();

// update value
$("#percent").val('0'+userInput+'.');

// simulate paste event to refresh mask input plugin state
$("#percent").trigger('paste').trigger('input');
}
}
}
}).mask("99.99?9", {placeholder: ""});

工作 JSFiddle here

关于javascript - Jquery Masked Input 插件允许点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13298118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com