160个字符的消息计数器在启动时显示NaN

时间:2017-01-13 07:06:52

标签: javascript angularjs

我正在尝试计算邮件的字符数,如果字符数超过160,我正在增加邮件数量,但问题是在我开始输入总短信显示NaN之前,一旦我开始输入它很完美。

第二个问题是,我希望随着消息数量的增加增加短信费用,请参阅下面的代码。

<textarea class="text-input--underbar" placeholder="Enter Message" style="width: 100%; height: 100px;" onkeyup="textCounter(this,'counter',160);" ng-model="message" name="message" id="message" required></textarea>

Remaining Characters : <input disabled  maxlength="3" size="3" value="160" id="counter"> / SMS

Total SMS(s) : {{ (message.length - message.length % 160) / 160 + 1 }}

Cost : {{sms_rate}}&cent / SMS

请参阅下面的截图。

enter image description here

1 个答案:

答案 0 :(得分:3)

我建议在控制器上编写一个方法来处理你的数学。你得到NaN的原因是因为在开始'消息'是空白的,因此长度为0.我相信你知道,0除以任何东西都会给出错误。

例如你的方法:

function calcTotal() {
  var total = (message.length - message.length % 160) / 160 + 1;
  return Number.isInteger(total) > 0 ? total : 0;
}

在你的模板中:

Total SMS(s) : {{ calcTotal() }}

通过检查总数是否为数字,您有一个安全网。如果不是,则返回0,这样就不会得到'NaN'。

至于你的增量。您可以在控制器中安装某种计数器,以跟踪已发送的邮件数量,然后您可以使用这些邮件来更改SMS的成本。