当前位置: 首页 > 面试题库 >

ng-maxlength固定我的模型

鲜于宏义
2023-03-14
问题内容

我正在尝试做一个简单的文本区域,其中包含“剩余的许多字符”以及验证。当我使用ng-
maxlength验证表单时,一旦长度达到最大长度,它将立即重置我的字符计数。这是笨蛋
任何解决方法?

  <body ng-controller="MainCtrl">
    <div ng-form="noteForm">
      <textarea ng-maxlength="15" ng-model="result"></textarea>
      <p>{{15 - result.length}} chars remaining</p>
      <button ng-disabled="!noteForm.$valid">Submit</button>
    </div>
  </body>

问题答案:

当您的textarea超过15个字符时,result变为undefined-这就是ng- min/maxlength指令的工作方式。我认为您必须编写自己的指令。这是一条指令,它将在15个字符后阻止输入:

<textarea my-maxlength="15" ng-model="result"></textarea>



app.directive('myMaxlength', function() {
  return {
    require: 'ngModel',
    link: function (scope, element, attrs, ngModelCtrl) {
      var maxlength = Number(attrs.myMaxlength);
      function fromUser(text) {
          if (text.length > maxlength) {
            var transformedInput = text.substring(0, maxlength);
            ngModelCtrl.$setViewValue(transformedInput);
            ngModelCtrl.$render();
            return transformedInput;
          } 
          return text;
      }
      ngModelCtrl.$parsers.push(fromUser);
    }
  }; 
});

[fiddle](http://jsfiddle.net/bZGcg/)

更新: 允许超过15个字符,但是当计数超过15个时禁用提交按钮:

link: function (scope, element, attrs, ngModelCtrl) {
  var maxlength = Number(attrs.myMaxlength);
  function fromUser(text) {
      ngModelCtrl.$setValidity('unique', text.length <= maxlength);
      return text;
  }
  ngModelCtrl.$parsers.push(fromUser);
}

[fiddle](http://jsfiddle.net/bZGcg/1/)



 类似资料:
  • 问题内容: 我可以在CSS中用某些东西代替maxlength属性吗? 问题答案: 否。这需要在HTML中完成。如果需要,可以使用Javascript设置值。

  • jQuery MaxLength 插件。 该插件能够为文本区设置最大长度。可以删除不再需要的最大长度功能,或者禁用/启用该字段。 在达到限制时发出警告 自定义用户反馈

  • 我用‘固定’使‘导航’不动。然而,如果有一个“标题”,则有一个与“标题”区域一样多的边距。在向上移动了多少‘头部’区域后,我想把它固定在那个位置。我在用“反应”所以很难找到方法。我正在自学,所以我原来知道的不多,所以我来学习一些新的东西。 null null

  • 问题内容: 我正在尝试创建一个自定义组件,该组件使用从内而外的指令使用动态ng-model。 例如,我可以调用不同的组件,例如: 使用如下指令: 想法是,如果模型发生更改,则指令中的文本框将发生更改,反之亦然。 事实是,我尝试了不同的方法,但都没有成功,您可以在此处检查以下方法之一:http : //plnkr.co/edit/7MzDJsP8ZJ59nASjz31g?p=preview在此示例中

  • constMemory(string $fileName); 示例 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $excel->constMemory('tutorial01.xlsx'); $fileHandle = $fileObject->getH

  • 问题内容: 我是 AngularJs的 新手。谁能说出ng-model和data-ng-model之间的区别? 与ng-model 使用data-ng-model 问题答案: 最佳实践:建议使用破折号分隔格式(例如ng-bind用于ngBind)。 如果要使用HTML验证工具,则可以改用数据前缀版本(例如ngBind的data-ng-bind)。 出于遗留原因,可以接受上面显示的其他表格,但是我们