AngularJS 文本区域计数器
AngularJS textarea counter
我创建了一个包含文本区域的联系表单,我想显示使表单有效所需的最小字符数:
<div class="field form-group">
<label for="message" class="form-label">Your Message:</label>
<textarea id="message" name="message" ng-model="contactData.sender_message" class="form-control" rows="6" ng-class="{ 'has-error': contactForm.message.$touched && contactForm.message.$invalid }" ng-minlength="10" ng-trim="false" placeholder="Questions? Comments? Concerns?" required></textarea>
<p ng-show="contactForm.message.$error.minlength">{{10 - contactData.sender_message.length}}</p>
</div>
这样做的问题是它只显示"10"并且不会更新,而是在输入 10 个字符后消失。我的猜测是我的长度有问题,但我不确定。
旁注:无论如何,我是否可以在单击文本区域后立即显示字符计数,而不仅仅是在用户开始键入时?
信息
你真的很接近你需要的东西,但我做了一些改变。
- 使用
$viewValue.length
代替contactData.sender_message.length
[1] - 使用
ng-click="contactForm.message.$touched = true"
在用户单击文本区域时将$touched
值设置为 true。 - 将
has-error
类与具有form-group
类的div 放在同一div 上。
例
function TodoCtrl($scope) {
$scope.contactData = {
sender_message: ""
};
}
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<div ng-app>
<form name="contactForm" novalidate>
<div class="field form-group" ng-class="{ 'has-error': contactForm.message.$touched && contactForm.message.$invalid }">
<label for="message" class="form-label">Your Message:</label>
<textarea id="message" name="message" ng-model="contactData.sender_message" class="form-control" rows="6" ng-minlength="10" ng-trim="false" placeholder="Questions? Comments? Concerns?"
ng-click="contactForm.message.$touched = true" required></textarea>
<p ng-show="contactForm.message.$touched">Min Length {{(10 - contactForm.message.$viewValue.length) > 0 ? (10 - contactForm.message.$viewValue.length) : "Met" }}</p>
</div>
</form>
</div>
*注意:这可能违背了 AngularJS 中的常见做法;可能不建议这样做。您应该考虑创建自定义验证器。有关更多详细信息,请参阅 AngularJS 表单验证。
[1] 感谢@entre使用$viewValue
的想法
尝试使用
{{10 - contactForm.message.$viewValue.length}}
相关文章:
- JQuery使计数器每次更改时都会增加
- onkeyup无法动态创建多个文本区域
- FabricJs-限制主对象内添加对象的移动区域
- Javascript计数器变量未显示正确的值
- 具有所有样式的文本正在复制到可编辑文本区域
- 如何为高图中的区域线创建z索引
- 在文本区域POST后解码JSON
- 在文本区域中使用jQuery.text()保持换行符
- ng在下拉列表和文本区域提交
- 使用fabric.js从矩形区域获取对象,并将该区域绘制到画布上
- 当用户按下回车键时,自动在text区域/text中插入消息
- 将文本插入光标所在的文本区域
- 多重<text区域>具有字符计数器+行限制器的字段
- jQuery文本区域计数器
- AngularJS 文本区域计数器
- 文本区域's和音节计数器.[JQuery/Javascript]
- 如何在EXT.JS中构建一个具有字符计数器和最大长度的文本区域
- 正在寻找一个可以处理多个文本区域的jQuery文本计数器
- 对文本区域字符计数器限制的小修改
- 更改jqGrid表单编辑文本区域,使其具有字符计数器