我想将输入值限制为数字(包括-ve整数)并将小数限制为2位数。
接受:
22.33; -123.45; 0.22
拒绝:
-123.000123; --123.000123; -123-23.12; --23-1.00
我正在使用这个
<input id="restricted" type="text" class="form-control" placeholder="00.00" onkeypress="return isNumberKey(evt,this)"/>
function isNumberKey(evt, element) {
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode > 31 && (charCode < 48 || charCode > 57) && !(charCode == 46 || charcode == 8))
return false;
else {
var len = $(element).val().length;
var index = $(element).val().indexOf('.');
if (index > 0 && charCode == 46) {
return false;
}
if (index > 0) {
var CharAfterdot = (len + 1) - index;
if (CharAfterdot > 3) {
return false;
}
}
}
return true;
}
我不希望它验证。我希望它不接受整数以外的限制,并在“。”后将其限制为2位数。
答案 0 :(得分:0)
使用HTML5模式。
<form action="#">
<input type="text" pattern="[\d]+" title="Numbers">
<input type="Submit" value="Validate">
</form>
或直接的javascript变体:
var input_field = document.getElementById('the_id');
input_field.addEventListener('keyup', function() {
var v = parseFloat(this.value);
if (isNaN(v)) {
this.value = '';
} else {
this.value = v.toFixed(2);
}
});
<input id="the_id" placeholder="00.00" value="1234">
答案 1 :(得分:0)
应将keypress
更改为keyup
。我还更新了isNumberKey()
代码
HTML
<input type="text">
JS
function isNumberKey(value) {
console.log(value);
var regex = /^[+-]?\d*\.?\d{0,2}$/;
if(regex.test(value)){
console.log("true");
return true;
}else{
console.log("false");
return false;
}
}
$("input[type=text]").on('keyup', function(){
if (!isNumberKey(this.value)){
$(this).val(function(index, value){
return value.substr(0, value.length - 1);
});
}
});
答案 2 :(得分:0)
function isNumberKey(evt, element) {
$('#restricted').bind("change paste keyup blur", function() {
if(this.value.length == 1 && this.value == '-'){
//do nothing
}
else{
var retValu = testInput(this.value);
if(retValu != '1'){
try{
this.value = this.value.substring(0, this.value.length - 1);
}catch(e){
}
}
}
});
}
function testInput(inputValue)
{
if (inputValue.match(/^-?[+]?[0-9]+([.][0-9]{1,2})?$/)){
return 1;
}
else if(inputValue.match(/^-?[+]?[0-9]+([.])?$/)){
return 1;
}
else{
return 0;
}
}
testInput("22.33");
testInput("-123.45");
testInput("0.22");
testInput("-123.000123");
testInput("--123.000123");
testInput("-123-23.12");
testInput("--23-1.00");
答案 3 :(得分:0)
100%工作!!好好享受!!!并跟随像我们这样的其他人帮助!!
<html>
<head>
<script>
function replacePonto(){
var input = document.getElementById('qtd');
var ponto = input.value.split('.').length;
var slash = input.value.split('-').length;
if (ponto > 2)
input.value=input.value.substr(0,(input.value.length)-1);
if(slash > 2)
input.value=input.value.substr(0,(input.value.length)-1);
input.value=input.value.replace(/[^0-9.-]/,'');
if (ponto ==2)
input.value=input.value.substr(0,(input.value.indexOf('.')+3));
if(input.value == '.')
input.value = "";
}
</script>
</head>
<body>
<input type="text" id="qtd" maxlength="10" style="width:140px" onkeyup="return replacePonto()">
</body>
</html>