我有一个<input type="number">,我想将用户的输入限制为纯数字或带有小数点后最多2位的数字。

基本上,我是在要求一个价格输入。

我想避免使用正则表达式。有办法吗?

<input type="number" required name="price" min="0" value="0" step="any">

当前回答

  <input type="number" class="form-control" id="price" oninput="validate(this)" placeholder="Enter price" name="price" style="width:50%;">

  var validate = function(e) {
      var t = e.value;
      e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) + t.substr(t.indexOf("."), 3)) : t;
  }

其他回答

使用step="而不是step="any",因为它允许小数位数任意。“01”,最多允许小数点后两位。

更多详细信息见规范:https://www.w3.org/TR/html/sec-forms.html#the-step-attribute

  <input type="number" class="form-control" id="price" oninput="validate(this)" placeholder="Enter price" name="price" style="width:50%;">

  var validate = function(e) {
      var t = e.value;
      e.value = (t.indexOf(".") >= 0) ? (t.substr(0, t.indexOf(".")) + t.substr(t.indexOf("."), 3)) : t;
  }

步骤1:将HTML数字输入框与onchange事件挂钩

myHTMLNumberInput.onchange = setTwoNumberDecimal;

或者HTML代码

<input type="number" onchange="setTwoNumberDecimal" min="0" max="10" step="0.25" value="0.00" />

步骤2:编写setTwoDecimalPlace方法

function setTwoNumberDecimal(event) {
    this.value = parseFloat(this.value).toFixed(2);
}

您可以通过改变传递给toFixed()方法的值来改变小数点后的位数。请参阅MDN文档。

toFixed(2); // 2 decimal places
toFixed(4); // 4 decimal places
toFixed(0); // integer

你可以用这个。反应钩子

输入< 类型=“当家” name = "价格" 普莱斯placeholder =“回车” 一步=“任何” 所需 />

试着在输入类型中只允许2个小数

<input type="number" step="0.01" class="form-control"  />

或者使用jQuery的建议@SamohtVII

$( "#ELEMENTID" ).blur(function() {
    this.value = parseFloat(this.value).toFixed(2);
});