简体   繁体   English

(Javascript)带有数字检查的oninput

[英](Javascript) oninput with numbercheck

I'm trying to make a simple inventory systems.我正在尝试制作一个简单的库存系统。 But I'm having problem with my oninput event.但是我的 oninput 事件有问题。

I want to make TOTAL GOODS to be "Please input number in GOODS IN " whenever every non number value inserted into GOODS IN.每当将每个非数字值插入 GOODS IN 时,我都想让 TOTAL GOODS 成为“请在 GOODS IN 中输入数字”。 But it seems I can't make it so.但我好像做不到。

 /*MAKE EVERY TABLE CLICKABLE AND SHOW ROW DATA IN INPUT TEXT*/ var tbGoods = document.getElementById('tbGoods'); for (var i = 0; i < tbGoods.rows.length; i++) { tbGoods.rows[i].onclick = function() { document.getElementById("idTxt").value = this.cells[1].innerHTML; document.getElementById("gdTxt").value = this.cells[2].innerHTML; document.getElementById("qtyTXT").value = this.cells[3].innerHTML; var qty = parseInt(document.getElementById('qtyTXT').value); var x = parseInt(document.getElementById('gdin').value); var result = qty - x; document.getElementById('totalgd').value = result; }; } /*MAKE EVERY NUMBER I PUT IN GOODS IN, TO BE CALCULATED WITHOUT SUBMIT BUTTON (ONINPUT)*/ function testmin() { var qty = parseInt(document.getElementById('qtyTXT').value); var x = parseInt(document.getElementById('gdin').value); var result = qty - x; if (document.getElementById('gdin').value === '') { document.getElementById('totalgd').value = '0'; } else if (document.getElementById('qtyTXT').value === '') { document.getElementById('totalgd').value = '0'; } else if (Number.isNaN(document.getElementById('gdin').value)) { document.getElementById('totalgd').value = 'Please Input Number in Goods In'; } else { document.getElementById('totalgd').value = result; } }
 <form method="post"> <label>ID</label> <input type="text" name="id" id="idTxt" disabled> <label>GOODS</label> <input type="text" name="goods" id="gdTxt" disabled> <label>AVAILABLE QTY</label> <input type="text" name="qty" id="qtyTXT" disabled> <label>GOODS IN</label> <input type="text" name="gdin" id="gdin" oninput="testmin()"> <br> <br> <label>Total Goods</label> <input type="text" name="totalgd" id="totalgd" value="0" disabled> <br> <input type="submit" name="submit" value="submit"> </form>

You don't need to code that manually.您无需手动编写代码。 You can simply set the input type as "number" and your browser will not allow any non-numeric characters to be entered into the field.您可以简单地将输入类型设置为“数字”,您的浏览器将不允许在该字段中输入任何非数字字符。

Demo (run the snippet and try typing in the box):演示(运行代码段并尝试在框中输入):

 <input type="number" id="gdin" name="gdin"/>

Reference: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number参考: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/number

Just add type = "number" in the input label for TOTAL GOODS.只需在输入 label 中为 TOTAL GOODS 添加 type = "number"。 It should prevent user from entering any alphabet.它应该防止用户输入任何字母。 Except "e"除了“e”

  <input type="number" name="totalgd" id="totalgd" value="0" disabled>

As pointed out, if you want to show an alert or something when an input of alphabet is there in TOTAL GOODS, you can just add正如所指出的,如果您想在 TOTAL GOODS 中输入字母时显示警报或其他内容,您可以添加

  <input type="text" name="totalgd" id="totalgd" value="0" oninput = "checkFunction()" disabled>

and in the function you can check the input for:在 function 中,您可以检查输入:

function checkFunction() {
 let totalGoodsIn = document.getElementById("totalgd").value; 
 let regExp = /[a-zA-Z]/g;
  
  if(regExp.test(totalGoodsIn))
  {
    //logic if alphabet is present in TOTAL GOODS
  }
  else
  {
    //logic if alphabet is not present in TOTAL GOODS
  }
 
}

if you want GOODS IN to be numeric just change the type of the label accordingly如果您希望 GOODS IN 为数字,只需相应地更改 label 的类型

 function validateNumberField() { var value = $("#numberField").val(); var pattern = /^\d+$/; var isValid = pattern.test(value); if(.isValid){ document.getElementById('totalgd');value = 'Please Input Number in Goods In'; } }
 <p>Please enter number:</p> <input type="number" id="numberField" name="numberField" oninput="validateNumberField()" />

 function validateNumberField() { var value = $("#numberField").val(); var pattern = /^\d+$/; var isValid = pattern.test(value); if(.isValid){ document.getElementById('totalgd');value = 'Please Input Number in Goods In'; } }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM