[Ликбез]

Форма входа

Меню сайта



Как сделать ограничение поста по символам, лимит поста?
[1] likbezz [23.05.2011, 23:09]
Скрипт лимита поста. (моя версия)
...

Скрипт добавляется в шаблон: Форум » «Форма добавления сообщения» в самый низ или после оператора $_MESSAGE$.

Сам скипт:

Code
<script type="text/javascript">
/* Copyright: http://likbezz.ru/ */     
function checklen(){      
var maxlen=4000;/* Максимальное кол-во символов в сообщении */
var obj=document.getElementById('message'),cntr=document.getElementById('fcounter'),str=obj.value,len=str.length;
if(len>maxlen){str=str.substring(0,maxlen);
alert('Превышен максимальный лимит символов: '+maxlen+'');
len=str.length;obj.value=str;} ;     
cntr.value=(maxlen-obj.value.length);      
while(cntr.value<0){obj.value=str.substring(0,len-1);      
str=obj.value;len=str.length;cntr.value=(maxlen-obj.value.length);      
}};
document.getElementById('message').onkeyup=function(){setTimeout('checklen()',100);}
</script>

Где:
var maxlen=4000; - максимальный лимит символов. При превышении сообщение будет обрезаться.
alert('Превышен .... : '+maxlen+''); - сообщение, выводимое при превышении лимита.
...

Также, после оператора $_MESSAGE$, добавляется код инпута, выводящего информацию о количестве оставшихся символов:

Код инпута:

Code
<div style="text-align:left;">Оставшийся лимит: <input id="fcounter" type="text" class="codeButtons" size="6" value="4000" readonly="readonly"> символов</div>

Где:
value="4000" - изначальное значение, выводимое в инпуте. Должно равняться maxlen (максимальный лимит символов) - не существенно.
...

Всё вместе:
Вот так (фрагмент кода):

Code
<td class="gTableRight" id="frM58">$BBCODES$
$_MESSAGE$
<div style="text-align:left;">Оставшийся лимит: <input id="fcounter" type="text" class="codeButtons" size="6" value="4000" readonly="readonly"> символов</div>
<script type="text/javascript">
/* Copyright: http://likbezz.ru/ */     
function checklen(){      
var maxlen=4000;/* Максимальное кол-во символов в сообщении */
var obj=document.getElementById('message'),cntr=document.getElementById('fcounter'),str=obj.value,len=str.length;
if(len>maxlen){str=str.substring(0,maxlen);
alert('Превышен максимальный лимит символов: '+maxlen+'');     
len=str.length;obj.value=str;} ;     
cntr.value=(maxlen-obj.value.length);      
while(cntr.value<0){obj.value=str.substring(0,len-1);      
str=obj.value;len=str.length;cntr.value=(maxlen-obj.value.length);      
}};
document.getElementById('message').onkeyup=function(){setTimeout('checklen()',100);}
</script>
</td>

Скрин вставки:


...

Результат:


...

Вопросы только по теме.

Вопросы в теме ограничены 1000 символами (на первой странице).
...

Прикрепления: 1133943.png (15.9 Kb) · 0172432.png (3.6 Kb)
[2] likbezz [23.05.2011, 23:12]
Альтернативный скрипт, вставляющий инпут сам.
То бишь, просто добавляем скрипт в шаблон: Форум » «Форма добавления сообщения» в самый низ или после оператора $_MESSAGE$.
И всё.
Настройки те же.

Скрипт:

Code
<script type="text/javascript">
/* Copyright: http://likbezz.ru/ */     
function checklen(){      
var maxlen=4000;/* Максимальное кол-во символов в сообщении */
var obj=document.getElementById('message'),cntr=document.getElementById('fcounter'),str=obj.value,len=str.length;
if(len>maxlen){str=str.substring(0,maxlen);
alert('Превышен максимальный лимит символов: '+maxlen+'');     
len=str.length;obj.value=str;} ;     
cntr.value=(maxlen-obj.value.length);      
while(cntr.value<0){obj.value=str.substring(0,len-1);      
str=obj.value;len=str.length;cntr.value=(maxlen-obj.value.length);      
}};
$(function(){    
$('#message').after('<div style="text-align:left;">Оставшийся лимит: <input id="fcounter" type="text" class="codeButtons" size="6" value="" readonly="readonly"> символов</div>').bind('keyup',function(){setTimeout('checklen()',100);});
});
</script>

....
[3] likbezz [23.05.2011, 23:15]
Наблюдать работу скрипта можно в этой теме Только зарегистрарованным. Ограничение только на первой странице и равно 1000 символов.


Прикрепления: 3657804.png (9.7 Kb)


Полная версия сайта