限制文本区域中的短信字符和计数
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
};
我的解决方案如下:
在 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
我尝试为给定 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
};
我的解决方案如下:
在 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