当达到最大长度时,防止用户输入额外字符

4
使用angularjs时,我对ng-maxlength标签不满意。我想让输入框在达到最大长度后阻止用户继续输入额外的字符。因此,我尝试编写一个指令,在keydown/keypress时验证输入内容,取代了ng-maxlength
.directive('vldMaxLength', function() {
  return function (scope, element, attr) {
    element.bind('keydown keypress', function (event) {
      if(event.target.value.length >= 10 && (event.which !== 8 && event.which !== 46)) {
        event.preventDefault();
      }
    });
  };
})

这个功能运行良好,但用户无法突出字符串的一部分并用不同的字符替换它。也许我可以为指令添加一些东西来实现这个?或者也许有一种更简单的方法可以获得这个功能,而不是使用指令。
JSFiddle: http://jsfiddle.net/DwKZh/147/
1个回答

17

你可以使用纯HTML版本:

<form action="demo_form.asp">
  Username: <input type="text" name="usrname" maxlength="10"><br>
  <input type="submit" value="Submit">
</form>

@mila 如果你正在使用Angular,请使用Angular的方式来限制字段长度。 - Codeman
@ArlenBeiler ng-maxlength: https://docs.angularjs.org/api/ng/directive/input它比简单的HTML解决方案提供了更多的数据模型信息,因此您可以向用户提供反馈,例如。 - Codeman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接