2017-01-13 4 views
2

メッセージの文字数をカウントしようとしていますが、文字数が160を超えると、メッセージ数が増えていますが、 )NaNを示します。一度入力すると完全に機能します。開始時に160文字のメッセージカウンタにNaNが表示される

第2の問題は、メッセージの数が増えるにつれてSMSのコストを増やしたいのですが、下のコードを参照してください。

<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

答えて

3

私はあなたの数学を処理するためのコントローラ上のメソッドを書いてお勧めします。あなたがNaNを得る理由は、開始時に 'message'が空白で長さが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のコストを変更することができます。

+0

いつこの 'calcTotal()'関数を呼びますか?キーアップ? –

+0

いいえ、そのままテンプレートに入れることができます。 Angularはコントローラテンプレートリンク($ digestループ)を常に更新します。メッセージ内の何かを変更すると、その合計が「オンザフライ」で計算されます。 – rrd

+0

@rrd JS/Angular -Thingですか?私が0/160を分けると、私は計算機に0を得ます。私が160/0を分けると、0で割ることができないので、明らかに間違っています。 –

関連する問題