2016-11-11 24 views
0

我正在制作Web应用程序,要求用户输入带有一位小数的数字。我限制用户进入其它字符使用这段JavaScript代码允许html输入框只输入一个完整的数字和精确的十进制.5

HTML

<input type="number" name='days' class="w3-input w3-padding-tiny" id="cntday" onkeypress="return isNumberKey(event)" placeholder="Enter days"/> 

的JavaScript

function isNumberKey(evt) { 
      var charCode = (evt.which) ? evt.which : evt.keyCode; 
      if (charCode != 46 && charCode > 31 && 
      (charCode < 48 || charCode > 57)) 
      return false; 
      return true; 
     } 

不过这个功能只能防止用户输入数字以外的字符数。 我需要防止用户输入一个以上的小数位以及进入小数应该是0.5

是这样的

  • 如果用户输入5.55,应该有5.5更换或阻止用户输入另外小数

  • ,如果用户输入5.2或任何小数它应该换句话说用户5.5来代替应该只能够与小数0.5

输入数字

我该如何使用当前的onkeypress函数来实现这个功能?

这不是其他问题的重复。停止检举此

回答

1

您可以通过拆分做到数量分为两个部分:

第1部分为自然数。

第2部分十进制数。

,那么你可以代替任何输入十进制数.5

事情是这样的:

$('input').keyup(function() { 
 
var value = this.value; 
 
var pos = value.indexOf("."); 
 
var result; 
 
if (pos !== -1) { 
 
    var part1 = value.substr(0, pos); 
 
    var part2 = value.substr(pos); 
 
    result = part1 + part2.replace(part2,".5") 
 
    $('input').val(result); 
 
} 
 
}); 
 

 
function isNumberKey(evt) { 
 
    var charCode = (evt.which) ? evt.which : evt.keyCode; 
 
    if (charCode != 46 && charCode > 31 && 
 
     (charCode < 48 || charCode > 57)) 
 
     return false; 
 
     return true; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="number" name='days' class="w3-input w3-padding-tiny" id="cntday" onkeypress="return isNumberKey(event)" placeholder="Enter days"/>

1

使用此

$('#cntday').keyup(function() { 
    if(this.value %1 != 0.5){ 
     this.value = this.value - this.value%1 + 0.5; 
    } 
}); 

该条件检查是否输入了小数,只要输入小数并输入数字,它就会将其更改为.5 它符合您提到的两个要求。 在此处检查https://jsfiddle.net/xn0koawx/

相关问题