角度文本区域验证错误

Posted

技术标签:

【中文标题】角度文本区域验证错误【英文标题】:Angular textarea validation error 【发布时间】:2016-12-03 00:07:24 【问题描述】:

我的应用中有一个文本区域,如下所示:

<textarea type="text" class="form-control" name="bioBackground" ng-model="obj.background" value="obj.background" ng-change="autosave()" maxlength="1500" required></textarea>

这是一个必填字段,如您所见,我在代码中添加了一个必填标签。但是这个必需的标签会导致 Angular 出错。

例如:

如果我在字段和退格键中键入并删除所有文本,则会将对象从范围中删除。见下面的例子:

退格前

你可以看到背景变量在范围内。

退格并删除文本后:

你可以看到背景变量已经从作用域中消失了。

只有在我使用 required 标记时才会发生这种情况。如果我不使用所需的标签,它可以正常工作,即使在删除所有文本后,背景变量也会保持在范围内。

我做错了什么。

【问题讨论】:

那个包含experiencebackground的对象是在你的控制器中创建的吗? @KreepN 是的,就像这样$scope.obj = 我自己检查了一下,那是一些疯狂的东西。也找不到有关上述问题的任何文档。希望其他人有一些见解 @KreepN 有什么建议吗?我可能在控制器而不是前端提交时验证了我的字段。 我想这取决于你的最终目标,我认为这更像是一个有趣的 Angular 行为。我的意思是,即使它被从范围中删除,如果没有在文本区域中为您提供值,也应该无法提交表单。相关框应保持红色。 【参考方案1】:

它的工作,背景是未定义的,同时使用退格键删除所有文本。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) 
  $scope.name = 'World';
  $scope.obj = 
"experience":
"field0":"asdf",
"field1":"asss"
,
"background":""
;
console.log($scope.obj);
$scope.autosave=function()
 console.log($scope.obj); 
  


);
<!DOCTYPE html>
<html>

  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script>document.write('<base href="' + document.location + '" />');</script>
    <link href="style.css" rel="stylesheet" />
    <script data-semver="1.4.9" src="https://code.angularjs.org/1.4.9/angular.js" data-require="angular.js@1.4.x"></script>
    <script src="app.js"></script>
  </head>

  <body ng-app="plunker" ng-controller="MainCtrl">
    <textarea type="text" class="form-control" name="bioBackground" ng-model="obj.background" value="obj.background" ng-change="autosave()" maxlength="1500" required></textarea>
  </body>

</html>

【讨论】:

以上是关于角度文本区域验证错误的主要内容,如果未能解决你的问题,请参考以下文章

maxlength 属性的角度验证消息

angular js:无法验证文本区域

文本区域的验证不起作用

文本区域计数字符验证

使用 html 表单和 php 验证空白文本区域或是不是存在默认值

如何验证文本区域中的模式匹配?