html 中 SMS TextArea 的 Javascript 字符计数器

Posted

技术标签:

【中文标题】html 中 SMS TextArea 的 Javascript 字符计数器【英文标题】:Javascript Character Counter for SMS TextArea in html 【发布时间】:2018-11-03 14:02:04 【问题描述】:

我设计了短信发送页面来发送短信。我正在使用 javascript 显示从 160 开始倒数的字符数。问题是我不知道如何计算每 160 个字符后的短信数。

我在js函数中的代码:

function CountCharIndividual(txtIndividualMessage) 
        var count = document.getElementById(txtIndividualMessage).value.length;
        if (count > 1 && count <= 160) 
            document.getElementById('charstatus2').innerhtml = 160 - document.getElementById(txtIndividualMessage).value.length;
        
        if (document.getElementById(txtIndividualMessage).value.length > 160 - 1) 
            document.getElementById('charstatus2').innerHTML = "Maximum characters reached & now " + "showing new count: " + document.getElementById(txtIndividualMessage).value.length;
        
        if (document.getElementById(txtIndividualMessage).value.length >= 160) 
            document.getElementById('smsCount').innerHTML = 1;
        
    

它显示 smsCount 的 innerHTML 中的前 160 个字符,但此后不再增加。

【问题讨论】:

Count characters in textarea的可能重复 【参考方案1】:

试试下面的代码,如果有帮助的话

function CountCharIndividual(txtIndividualMessage) 

  var count = document.getElementById(txtIndividualMessage).value.length;
  var maxLength = 160;
  var smsCount = parseInt(count / maxLength);
  if (smsCount > 0) 
    document.getElementById('smsCount').innerHTML = smsCount;
   else 
    if (count > (maxLength - 1)) 
      document.getElementById('charstatus2').innerHTML = "Maximum characters reached & now " + "showing new count: " + count;
     else 
      document.getElementById('charstatus2').innerHTML = maxLength - count;
    

  


【讨论】:

【参考方案2】:

你可以使用这个逻辑

var limit = 160;   // it will be fixed value
var charCount = 170  // it will be dynamic value

var result = Math.ceil(charCount/limit)

现在result将显示已消耗的短信数量。

【讨论】:

【参考方案3】:

您需要计算文本框中的字符总数并将其除以消息长度,在您的情况下为 160 个字符

function CountCharIndividual(txtIndividualMessage) 
        var count = document.getElementById(txtIndividualMessage).value.length;
        if (count > 1 && count <= 160) 
            document.getElementById('charstatus2').innerHTML = 160 - count;
        
        if (document.getElementById(txtIndividualMessage).value.length > 160 - 1) 
            document.getElementById('charstatus2').innerHTML = "Maximum characters reached & now " + "showing new count: " + count;
        
        if (document.getElementById(txtIndividualMessage).value.length <= 160) 
            document.getElementById('smsCount').innerHTML = 1;
        
        else 
          document.getElementById('smsCount').innerHTML = (count - (count % 160)) / 160;
        
    

【讨论】:

@PrateekJahagirdar 你需要修改最后一个条件来计算短信数量,如下一行 document.getElementById('smsCount').innerHTML = (count - (count % 160)) / 160; 【参考方案4】:

我认为最后一个if condition 是原因。尝试如下

function CountCharIndividual(txtIndividualMessage) 
        var count = document.getElementById(txtIndividualMessage).value.length;
        if (count >= 1 && count <= 160) 
            document.getElementById('charstatus2').innerHTML = 160 - count;
        
        else if (count > 160 - 1) 
            document.getElementById('charstatus2').innerHTML = "Maximum characters reached & now " + "showing new count: " + count;
        
        else 
            document.getElementById('smsCount').innerHTML = parseInt(count / 160);
        
    

【讨论】:

我希望 'charstatus2' 中的每 160 个字符后,'smsCount' 增加 1。例如,如果 'charstatus2' = 160 则 'smsCount'=1 并且当 charstatus2=320 则 'smsCount'=2 等等 @PrateekJahagirdar 请尝试修改后的答案 而不是使用parseInt(document.getElementById(txtIndividualMessage).value.length / 160); 使用Math.ceil(document.getElementById(txtIndividualMessage).value.length / 160); 来获取计数 感谢 Anil kumar 先生解决了问题,但唯一的问题是它以十进制显示。 @PrateekJahagirdar 使用parseInt 来避免小数。请尝试使用答案的编辑代码

以上是关于html 中 SMS TextArea 的 Javascript 字符计数器的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Phone SMS API 从 phonegap HTML/Javascript 应用程序发送 SMS?

一条SMS最大字符数,字符数达到多少按MMS处理

尝试在 textarea 控件中显示 HTML 文本

html中怎样给textarea赋值

HTML:如何在 textarea 中保留格式?

利用内容提供者插入sms(装B程序)