gpt4 book ai didi

javascript - jquery keydown 仅用于数字

转载 作者:行者123 更新时间:2023-11-28 10:57:36 25 4
gpt4 key购买 nike

我有一个用于付款的输入框,我只想允许像 x.xx 这样的数字,当然 xxxx.x 可以使用,或者 xxxxx

我的设置几乎可以正常工作,但没有一些奇怪的行为。如果小数点后的数字 1 和 2 可以是 2 位数字长(有效),但如果我按 3-9 那么它只允许其中一位数字。小数点右边的 0 也被无限地允许。

这就是我正在处理的事情。我也想只允许输入按钮,当按下它时运行一个函数

$('#money-button-input-box').keydown(function(event) {
var str = $(this).val()

if(str.length >= 1){
var rightHalf = str.split('.')[1];
if(rightHalf >= 3 && event.keyCode != 8 ){
event.preventDefault();
}
}

if( (event.keyCode == 190 || event.keyCode == 110) && str.replace(/[^.]/g, "").length >= 1 ){
event.preventDefault();
}
allowOnlyNumbers(event);

if (event.keyCode == 13) {
if($(this).val() == '')return;
enterPayment($(this));
}
});

和函数

function allowOnlyNumbers(events){
// Allow: backspace, delete, tab, escape, and enter
if ( events.keyCode == 46 || events.keyCode == 8 || events.keyCode == 9 || events.keyCode == 27 || events.keyCode == 13 ||
// allow decimals
events.keyCode == 190 || events.keyCode == 110 ||
// Allow: Ctrl+A
(events.keyCode == 65 && events.ctrlKey === true) ||
// Allow: home, end, left, right
(events.keyCode >= 35 && events.keyCode <= 39)) {
// let it happen, don't do anything
return;
} else {
// Ensure that it is a number and stop the keypress
if (events.shiftKey || (events.keyCode < 48 || events.keyCode > 57) && (events.keyCode < 96 || events.keyCode > 105 )) {
events.preventDefault();
}
}
}

http://jsfiddle.net/Qxtnd/

最佳答案

小数的问题是因为你使用的是

rightHalf >= 3

它评估实际数字而不是它的长度,因为 javascript 将其类型转换为数字以进行比较。您想要的是位数,请尝试

rightHalf.toString().length >= 2

在这里摆弄http://jsfiddle.net/Qxtnd/1/

编辑

只要rightHalf是一个字符串,你就可以这样做:

rightHalf.length >= 2

如果 rightHalf 是一个数字,那么这样做会出现异常。

关于javascript - jquery keydown 仅用于数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17165010/

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