如果字符串长于数字,请不要写

时间:2018-04-06 16:58:32

标签: javascript html

如果长度的字符串超过12个字符,则用户无法写入。这是我的脚本(“mat”是文本字段)。

window.onload = function() {
  document.getElementById("mat").onchange = function() {
    if ((document.getElementById("mat").value.length) > 12) {
      document.getElementById("mat").value = document.getElementById("mat").value.substring(0, 12);
    }
  }
}

此代码正常工作,但只有在不再选择文本字段时,才会删除超过12个字符的字符。 我该怎么办?

3 个答案:

答案 0 :(得分:5)

为什么不使用<input type="text" maxLength="12">属性?

&#13;
&#13;
textarea
&#13;
&#13;
&#13;

从HTML 5开始,<textarea maxLength="12"></textarea>对象也支持它:

&#13;
&#13;
{{1}}
&#13;
&#13;
&#13;

答案 1 :(得分:4)

使用input事件代替change事件。 change事件仅在元素模糊时触发,而input事件在用户进行的每次更改时触发。

&#13;
&#13;
var mat = document.getElementById("mat");

mat.addEventListener('input', function() {
  if ((mat.value.length) > 12) {
    mat.value = mat.value.substring(0, 12);
  }
});
&#13;
<input id="mat">
&#13;
&#13;
&#13;

答案 2 :(得分:1)

使用input代替onchange

&#13;
&#13;
window.onload = function() {
  document.getElementById("mat").oninput = function() {
    if ((document.getElementById("mat").value.length) > 12) {
      document.getElementById("mat").value = document.getElementById("mat").value.substring(0, 12);
    }
  }
}
&#13;
<input type="text" id="mat" />
&#13;
&#13;
&#13;