角度文本区域计数器换行符SMS

角度文本区域计数器换行符SMS,sms,html,angularjs,Sms,Html,Angularjs,我正在尝试制作一个角色计数器,它可以模仿手机。我计算了字符、空格和换行符,但是我的计数器不同。使用换行符时,message.length的计数会减少1,但maxlength的计数会减少多个。我认为缩进时会添加更多空格,但不确定如何获取消息。length设置为与maxlength相同 {{160-message.length}左 在计算长度之前,可以将换行符替换为长度为2的字符串,如下所示: <span>{{160 - message.replace('\n', '--').len

我正在尝试制作一个角色计数器,它可以模仿手机。我计算了字符、空格和换行符,但是我的计数器不同。使用换行符时,message.length的计数会减少1,但maxlength的计数会减少多个。我认为缩进时会添加更多空格,但不确定如何获取
消息。length
设置为与
maxlength
相同


{{160-message.length}左

在计算长度之前,可以将换行符替换为长度为2的字符串,如下所示:

<span>{{160 - message.replace('\n', '--').length}} left</span>
{{160-message.replace('\n','--').length}left
查看此小提琴(为了便于测试,我已将小提琴中的最大长度减少到10):


因此,您只需将实际换行符(用户手动输入的换行符,而不是文本长度超过textarea宽度所允许的“虚拟”换行符)计算为两个字符

那么我建议:

<span>{{160 - message.length - (message.length ? message.split("\n").length-1 : 0)}} left</span>
{{160-message.length-(message.length?message.split(“\n”).length-1:0)}

{160-message.length-(message.length?message.split(“\n”).length-1:0)}左

答案不起作用的原因是ng trim设置为false。将其设置为true,则不计算空格Soh,我为不清楚而道歉-我确实需要它来计算空格和换行符,但ng trim将它们都计算为1;但是,SMS将换行计数为2。我正在寻找一种方法,将换行符精确地计算为2,以与maxlength匹配。第一次换行符可能重复,它将换行符计算为2,但后续换行符将计算为1。这太完美了!谢谢