我在让用户在具有相同类的文本框中输入数值时遇到问题。
我想要的是:
- 允许用户在小数点前只输入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>
我的 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;
}
});
这是我的fiddel DEMO的链接