如何限制HTML文本框中字符的出现次数?

时间:2018-01-22 16:31:33

标签: javascript html input

如何在HTML中的文本框中将句点(例如)的出现次数限制为仅1 ?我想创建一个只接受数字和仅1个句号的文本框,以帮助防止错误。我正在使用HTML元素input并使用JavaScript(请不要使用JQuery)。

2 个答案:

答案 0 :(得分:1)

<强> 1。仅允许使用数字而不限制句点或小数点。

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

  return true;
}
&#13;
<input id="textChar" onkeypress="return isNumberKey(event)" type="text" name="textChar">
&#13;
&#13;
&#13;

<强> 2。仅允许十进制数字,最多只有一个小数点和一个句点

setTimeout(...,0)是在已修改字段值后执行该函数的方法。

&#13;
&#13;
document.write('<input id="inputField" onkeyup="run(this)" />');

function run(field) {
  setTimeout(function() {
    var regex = /\d*\.?\d?/g;
    field.value = regex.exec(field.value);
  }, 0);
}
&#13;
&#13;
&#13;

第3。仅允许十进制数字,小数点没有限制但只有一个句点

&#13;
&#13;
document.getElementById('reg').onkeypress = function(e) {

  if (e.keyCode === 46 && this.value.split('.').length === 2) {
    return false;
  }
}
&#13;
<input type="number" id="reg">
&#13;
&#13;
&#13;

答案 1 :(得分:-2)

您可以使用正则表达式,但分割字符串和计算长度更容易。大于两个意味着你有两个时期:

 "Uno. Dos.".split('.').length  #3
 "Uno. Dos".split('.').length  #2