限制字母功能无法正常工作

时间:2018-08-15 18:21:09

标签: javascript

下面的Javascript函数限制了输入文本框中的字母,但不幸的是,它没有限制以下符号# $ % & ( .,我也需要限制它们。

还可以将输入限制为14位,但不能少于或大于14位?

function restrictAlphabets(e){
    var x=e.which||e.keycode;
    if((x>=48 && x<=57) || x==8 || (x>=35 && x<=40)|| x==46)
        return true;
    else
        return false;
}

1 个答案:

答案 0 :(得分:0)

您可以使用maxlength属性来限制input字段或textarea中输入文本的长度。要允许允许数字,您将需要使用允许的keyCodes创建一个Array,并检查事件的键码是否存在于Array中。

<input type="text" maxlength="14" onkeydown="return isAlpha(event)">
<script>
function isAlpha(e){
 e = e||window.event;
 var key = e.which||e.keyCode;
 var nums =  [8, 46, 37, 39, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 35, 36];
 return nums.indexOf(key)!==-1;
}
</script>

但是,您只能使用<input type="number">仅允许数字输入。您可以使用maxmin属性来限制数字范围。 maxlength不适用于数字输入,但是我添加了一种解决方法。您可能还想阻止输入e键(键代码69),因为它在数字内有效。

<input type="number" min="1" max="99999999999999" maxlength="14" oninput="checkNumOfChars(this);" onkeydown="preventE(event)">
<script>
function checkNumOfChars(elem){
  if (elem.value.length > elem.maxLength){
   elem.value = elem.value.slice(0, elem.maxLength);
  }
}
function preventE(event){
  if(event.keyCode===69){
    event.preventDefault();
  }
}
</script>