У меня проблема с тем, чтобы позволить пользователям вводить числовые значения в мои текстовые поля, которые имеют тот же класс.
Что я хочу:
- Разрешить пользователям вводить только 2 числа до запятой и еще 2 после нее; в противном случае все клавиши регистрируются, кроме клавиш со стрелками, клавиши возврата и клавиши удаления.
Текущий выпуск
- Пользователи могут ввести только 2 числа; однако после того, как он / она добавит десятичную точку, они могут добавить перед ней другие числа.
- В настоящее время пользователи могут вводить только 5 цифр — 2 до запятой и еще 2 после запятой. Когда они удаляют одну цифру после запятой, они все равно могут добавить больше числа к цифре до этой запятой.
Мой HTML:
<form method="post">
<div class="row">
<label>Val 1</label>
<input type="text" class="validate" name="val1" maxlength="5" />
</div>
<div class="row">
<label>Val 2</label>
<input type="text" class="validate" name="val2" maxlength="5" />
</div>
<div class="row">
<label>Val 3</label>
<input type="text" class="validate" name="val3" maxlength="5" />
</div>
<div class="row">
<button type="submit">Send</button>
</div>
</form>
My JS:
Number.prototype.between = function (a, b, inclusive) {
var min = Math.min.apply(Math, [a,b]),
max = Math.max.apply(Math, [a,b]);
return inclusive ? this >= min && this <= max : this > min && this < max;
};
$('.validate').keypress( function( event ) {
var v = parseFloat($(this).val() + String.fromCharCode(event.which));
textValue = parseFloat(v).toString();
var newVal = parseInt( textValue.substr(0, textValue.indexOf(".")) );
console.log(newVal);
if(textValue.length < 6){
if(!parseFloat(v).between(0,99.99,true)) {
v = this.value.substring(0, 2);
$(this).val(v);
return false;
}
return true;
}
});
Вот ссылка на мою ДЕМО-версию фидделя