Лучший способ проверить значение входа, вместо нажатой клавиши. Потому что есть вкладки, стрелки, backspace и другие символы, которые необходимо проверить, когда вы используете код символа.
Это значение ввода кода проверки после того, как пользователь нажал ключ:
$('#p_first').keyup(function(){
while(! /^(([0-9]+)((\.|,)([0-9]{0,2}))?)?$/.test($('#p_first').val())){
$('#p_first').val($('#p_first').val().slice(0, -1));
}
});
В то время как цикл удаления последнего символа, пока входное значение не является допустимым. Regex /^(([0-9]+)((\.|,)([0-9]{0,2}))?)?$/
проверять целое число и число с плавающей точкой, например. «12,12», «12,1», «12.». Важно, чтобы число «12.» (точка в конце) также действительны! В противном случае пользователь не может ввести какой-либо период.
А затем отправить чек регулярное выражение для действительного числа флоат ([0-9]{1,2})
вместо ([0-9]{0,2})
:
$('form').submit(function(e){
if(! /^([0-9]+)((\.|,)([0-9]{1,2}))?$/.test($('#p_first').val())){
$('#p_first').addClass('error');
e.preventDefault();
}
});
Примечание: Лучше поместить $('#p_first')
в переменную.var input = $('#p_first');
держит какой ключ? Учитывая немного более подробное описание причины проблемы? –
любой ключ ... input type = text ... и пользователь удерживает, например, «aaaaaaaaaaaaaaaa», поэтому функция keyup() не запускается, пока он не прекратит удерживать клавишу «a» –
Спасибо, что предоставили больше проблем, я думаю мое предлагаемое решение должно решить вашу проблему. –