У меня есть поле ввода, которое для платежей, и я хочу, чтобы только номер, как x.xx, конечно xxxx.x будет работать или хххххJQuery KeyDown только цифры
у меня есть настройки довольно много работает минус какое-то странное поведение. если числа 1 и 2 после десятичного разряда могут быть 2 цифры длинными (работает), но если я нажимаю 3-9, то он разрешает только одну цифру. также 0 вправо от десятичного числа допускаются бесконечно.
heres what im working with. Также я хочу, чтобы только когда кнопку, и введите ее нажатой затем запустить функцию
$('#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();
}
}
}
Ну так это строка вы можете оставить из .ToString() она является тип литья ряда – Precastic
rightHalf не нужна функция ToString, потому что это была строка. –
все работает отлично. я также удалил tostring, как сказал другие – seesoe