允许html输入框只能输入一个完整的数字且正好是小数.5

Allow html input box to only enter one full number and exactly decimal .5

我正在制作要求用户输入小数点后一位数字的网络应用程序。我限制用户使用此 javascript 代码

输入其他字符

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;
         }  

但是这个功能只能防止用户输入数字以外的字符。 我需要防止用户输入多于一位小数以及输入的小数点应为 .5

是这样的

如何使用当前的 onkeypress 函数实现此目的?

这不是另一个问题的重复。停止标记此

您可以将数字分成两部分来完成:

自然数第 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"/>

使用这个

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

条件检查是否输入了小数,一旦输入小数并输入数字,它就会立即更改为 .5 它满足您提到的两个要求。 在这里查看 https://jsfiddle.net/xn0koawx/