限制文本区域中的短信字符和计数

Limit sms-chars & counting in textarea

我尝试为给定 javascript 中的 html-textarea 添加字符限制器。此外,我想添加一个总剩余计数器。但是我的代码不起作用。

你知道我哪里错了吗?

maxLen=640;
if(text.length>maxLen)
{document.getElementById("message").value=text.substring(0,maxLen);}

else
{document.getElementsByClassName("totalcounter").value=maxLen-text.length;}   

Demo on jsfiddle -> 我的问题是第 62-70 行。

你试过textarea的maxlength属性吗?

<textarea maxlength="50">

为了使您的代码正常工作,请在 "return" 之前移动 if else 块(如下所示)并使用 document.getElementsByClassName("totalcounter")[0].innerHTML=maxLen-text.length; 而不是 document.getElementsByClassName("totalcounter").value=maxLen-text.length;

maxLen=640;
        if(text.length>maxLen)
    {
        document.getElementById("message").value=text.substring(0,maxLen);
    }
        else
    {
        document.getElementsByClassName("totalcounter")[0].innerHTML=maxLen-text.length;
    }     
  return count = {
    encoding: encoding,
    length: length,
    per_message: per_message,
    remaining: remaining,
    messages: messages
  };

working JSfiddle

我的解决方案如下:

在 5 条消息后限制 SMS 文本(在手机上显示为 1)并添加总剩余计数器

<!-- maxLen GSM7: 765 chars = 5 Messages
<!-- maxLen GSM7EX: 765 chars - (number of used "gsm7bitExChar"-Chars * 2)= 5 Messages  
<!-- maxLen UTF16: 335 chars = 5 Messages     

if(encoding == 'GSM_7BIT'){
     maxLen=764;

if(text.length>maxLen)
{
  document.getElementById("message").value=text.substring(0,maxLen);
}
else
{
  document.getElementsByClassName("totalcounter")[0].innerHTML=maxLen-text.length;
}   

  return count = {
    encoding: encoding,
    length: length,
    per_message: per_message,
    remaining: remaining,
    messages: messages
    }

}; <!-- close if encoding 1

  if(encoding == 'GSM_7BIT_EX'){
    maxLen=762;

if(text.length>maxLen)
{
  document.getElementById("message").value=text.substring(0,maxLen);
}
else
{
  document.getElementsByClassName("totalcounter")[0].innerHTML=maxLen-text.length;
}   

  return count = {
    encoding: encoding,
    length: length,
    per_message: per_message,
    remaining: remaining,
    messages: messages
    }

};<!-- close if encoding 2

if(encoding == 'UTF16'){
    maxLen=334;

 if(text.length>maxLen)
{
  document.getElementById("message").value=text.substring(0,maxLen);
}
else
{
  document.getElementsByClassName("totalcounter")[0].innerHTML=maxLen-text.length;
}   

  return count = {
    encoding: encoding,
    length: length,
    per_message: per_message,
    remaining: remaining,
    messages: messages
    }

};<!-- close if encoding 3

希望这对其他人也有帮助。 Solution on jsfiddle

特别感谢danxexe