gpt4 book ai didi

html - Angular 文本区域计数器换行符 SMS

转载 作者:搜寻专家 更新时间:2023-10-31 08:10:17 25 4
gpt4 key购买 nike

我正在尝试制作一个模仿电话的字符计数器 .我可以计算字符、空格和换行符,但我的计数器不同。使用换行符时,它会在 message.length 的计数中减 1,但在 maxlength 中会减 1。我认为缩进时会添加更多空格,但不确定如何将 message.length 设置为与 maxlength 相同。

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app>
<textarea ng-model="message" ng-trim="false" maxlength="160"></textarea>
<span>{{160 - message.length}} left</span>
</body>

此外,此答案实际上对此不起作用(它将空格和换行符计为 1): angularjs text area character counter

最佳答案

因此,您唯一需要算作两个字符的是实际换行符(用户手动输入的换行符,而不是由于文本长度超过文本区域宽度所允许的长度而导致的“虚拟”换行符)?

那么我建议:

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

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<body ng-app>
<textarea ng-model="message" ng-trim="false" maxlength="160"></textarea>
<span>{{160 - message.length - (message.length ? message.split("\n").length-1 : 0)}} left</span>
</body>

message.split("\n").length 计算在换行处拆分消息后得到的部分数。一条没有换行符的消息给你一个“部分”,一条有一个换行符的消息给你两个部分,等等——因此 -1。拆分一个空字符串仍然会得到一个结果,因此首先检查消息是否有长度。

根据定义,浏览器必须以 \n 的形式返回文本区域值中的换行符——这些换行符已经被 message.length 计为一个字符,所以我们只需再次减去 \n 字符的数量,从而将每个 \n 计为结果中的 两个 个字符。 (我想它们在 SMS 文本消息长度中算作两个,因为实际上可能使用 \r\n 换行。)

关于html - Angular 文本区域计数器换行符 SMS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30875321/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com