Javascript 计算输入的字符数,并在x个字符后增加一个变量

Javascript 计算输入的字符数,并在x个字符后增加一个变量,javascript,angularjs,Javascript,Angularjs,我将AngularJS添加到一个项目中,需要计算文本区域的长度,每160个字符增加“页面”(消息传递应用程序)的总数,如果删除文本,则减少 使用Angular获取textarea的长度很简单: <textarea ng-model="message" class="form-control" name="message" id="message" cols="30" rows="2"></textarea> <span class="help-block">&

我将AngularJS添加到一个项目中,需要计算文本区域的长度,每160个字符增加“页面”(消息传递应用程序)的总数,如果删除文本,则减少

使用Angular获取textarea的长度很简单:

<textarea ng-model="message" class="form-control" name="message" id="message" cols="30" rows="2"></textarea>
<span class="help-block"><strong>Characters</strong>: <% message.length > 0 ? message.length : 0 %></span>

字符:0?消息长度:0%>

我猜处理逻辑以确定页数的最佳位置是在我的Javascript代码中,但我不知道如何将
ng模型
链接到我的代码。任何帮助都将不胜感激。

在Evandro Silva的帮助下-使用
ng change

$scope.change = function(length)
        {
            $scope.pages = Math.round(length / 160) + 1;
        }

<textarea ng-model="message" class="form-control" ng-change="change(message.length)" name="message" id="message" cols="30" rows="2"></textarea>
<span class="help-block"><strong>Characters</strong>: <% message.length > 0 ? message.length : 0 %></span>
$scope.change=函数(长度)
{
$scope.pages=Math.round(长度/160)+1;
}
字符:0?消息长度:0%>

不需要ng更改,您可以直接在dom中进行更改:

 <textarea ng-model="message" class="form-control" name="message" id="message" cols="30" rows="2"></textarea>
 <span class="help-block"><strong>Characters</strong>: {{ (message.length - message.length % 160) / 160 + 1 }}</span>

怎么样我真的很喜欢经过验证的答案Evandro-你让我走上了正确的轨道。回答我自己的问题,让我知道你的想法。谢谢看起来非常合理。您可能希望将整个消息发送给
onChange
处理程序,而不仅仅是发送长度,因为您可能希望在将来对其执行其他操作(将太长的字母涂成红色,在一段时间后限制键入,等等)Math.round实际上导致了问题,
parseInt()
似乎更符合要求。基本上,这是一个表单输入,将成为传出SMS消息的主体。因此,用户需要知道他们自己的消息正文将发送多少条消息,拆分为160个字符。因此,这让他们可以微调他们的信息,以避免多条短信。然而,你能给我一个如何将整个消息发送给处理程序的示例吗?谢谢
ng change=“onChange(message)”
$scope.onChange=函数(text){text.length…}
谢谢!这很有帮助:)我真的很喜欢这一点,但有一点我忘记了,ng的改变似乎有帮助。每个传出消息都有机构昵称、用户名和
@user
标记。因此,我需要测量的实际字符串长度是整个附加文本加上输入文本区域的内容。如果你能告诉我如何做这只是在角度,这将摇滚!完美!谢谢你,比我说的更有说服力
{{ (message.length - message.length % 160 + user.name + agency.nickname + ...) / 160 + 1 }}