Событие keypress
наступает до обновления значения.Используйте следующий код, который преобразует свойство event.which
в символ, используя метод String.fromCharCode
.
Непечатные нажатия клавиш сгенерируют ноль event.which
, который, безусловно, не является цифрой или точкой.
Что касается RegExp, вы должны сгруппировать выражение после точки и добавить вопросительный знак, чтобы сказать «Пусть это совпадение группы будет необязательным».
var reg = /^[0-9]{1,4}(\.[0-9]{0,2})?$/;
$("#txt" + filterID).bind('keypress', function (e) {
var nn = $("#txtValues");
var strValue = nn[0].value.toString() + String.fromCharCode(e.which);
strValue = $.trim(strValue);
var bool = reg.test(strValue);
if (bool) {
return true;
}
else {
e.preventDefault();
}
});
Шаблон будет соответствоватьследующее:
1
1234
1234.5
But not:
1235. (Change {0,2} to {1,2} if you want to reject this match)
123456
1234.567