Сейчас: 07:40:55   24-го апреля 2024 г.
UsefulScript.ruСкриптыРазныеТекстовое поле с лимитом
5
16

Текстовое поле с лимитом вводимых символов
и прогресс баром

Если у Вас на сайте имеются текстовые поля, в которые посетители могут вводить информацию, то неплохо было бы добавить к ним прогресс бар, показывающий, сколько процентов использовано от дозволенной максимальной длины данного поля. Данная функция может быть очень полезна в том случае, если введенный текст все равно обрежется на стороне сервера до указанной длины.


Ниже расположено текстовое поле с ограничением в 20 символов:


Limit: 0%

Для наглядности можно использовать и свой собственный блок с заданным стилем, который можно расположить отдельно от заполняемого текстового поля:


Использовано: 0%

Для создания на своем сайте подобного текстового поля с ограниченным количеством вводимых символов и прогресс баром, показывающим, сколько процентов от допустимой длины уже использовано, добавьте данный JavaScript код на свою страничку:

JavaScript код:
<script type="text/javascript">
function 
text_limit(fieldidlimit) {
var 
fieldWidth parseInt(field.offsetWidth);
var 
count_char field.value.length;

if (
count_char>limit) {
 
field.value field.value.substring(0limit);
 
text_limit(fieldidlimit);
}
else {
 var 
percent parseInt(100-((limit-count_char)*100)/limit);
 
document.getElementById(id).style.width parseInt((fieldWidth*percent)/100) + "px";
 
document.getElementById(id).innerHTML "Limit:&nbsp;" percent "%";

 
//Для использования своего собственного блока DIV
 
document.getElementById("id1").style["width"] = parseInt((500*percent)/100) + "px";
 
document.getElementById("id1").innerHTML "Использовано:&nbsp;" percent "%";
}
}
</script>

Текстовое поле, к которому применяется ограничение на количество вводимых символов с информативным прогресс баром, следует оформить следующим образом:

HTML код:
<textarea rows="5" cols="40" onKeyDown="text_limit(this, 'prog_bar', 20)"
onKeyUp="text_limit(this, 'prog_bar', 20)" onFocus="text_limit(this, 'prog_bar', 20)">
</
textarea>

<
div id="prog_bar" style="width: 1px; height: 14px; color: silver;
font-size: 12px; background-color: green;"
>Limit:&nbsp;0%</div>

<!--
Код второго блока DIV-->
<
div style="border: 1px solid #4874a3; width: 500px; height: 20px;
background: #f5f5f5; color: silver; margin-left: 30px;"
>
 <
div id="id1" style="width: 0%; height: 20px; background: blue;">
  
Использовано:&nbsp;0%
 </
div>
</
div>

Теперь пользователи, заполняющие какие-либо текстовые поля на Вашем сайте, смогут наглядно наблюдать, сколько процентов от допустимой длины поля они задействовали. Также они будут знать, что отправленные ими данные дойдут до адресата целиком, а не в обрезанном виде.

Дата создания: 22:20:36 15.08.2012 г.
Посещений: 4417 раз(а).

Комментарии посетителей (9 шт.):
Стас
0
# 1838
(07:18:40  29.08.2014 г.)

А можно узнать, как сделать тоже самое, только считались бы символы, а не проценты?
Ответить

Administrator
1
# 1839
(09:54:55  29.08.2014 г.)

Символы и так считаются (в переменной count_char), т.к. это необходимо для расчета процентов. Для вывода количества символов используйте: document.getElementById(id).innerHTML = "Limit:&nbsp;" + count_char;
Ответить

Виталий
0
# 3462
(12:29:51  27.09.2016 г.)

Доброе время суток, имеется форма отправки на php, пытался адаптировать данный код, но не работает, посмотрите где может быть ошибка.
echo '<textarea name="form_text" onkeydown="text_limit(this, 'prog_bar', 20)" onkeyup="text_limit(this,'prog_bar', 20)" onfocus="text_limit(this, 'prog_bar', 20)">'.$_SESSION[user_form_text].'</textarea>';
echo '<div id="prog_bar" style="width: 1px; height: 14px; color: silver; font-size: 12px; background-color: green;">Limit:&nbsp;0%</div>';

При таком раскладе выдается ошибка:
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';'
Одинарные кавычки менял на двойные для prog_bar, Ошибки нет, все отображается, но не работает...
Заранее благодарен.
Ответить

Administrator
0
# 3468
(23:24:16  27.09.2016 г.)

Обычная ошибка синтаксиса. Заэкранируйте обратным слэшем одинарные кавычки для prog_bar: \'prog_bar\'
Ответить

Виталий
0
# 3472
(12:56:34  28.09.2016 г.)

Спасибо, все работает. Подскажите еще пожалуйста, как проценты в прогресс баре сместить вправо к примеру на 5 px, margin и padding не срабатывают, можно высоту задать меняя высоту, а вот как сместить вправо, пока не разобрался, хотел бы дать небольшой отступ, чтобы не "прилипал", в коде JS как-то можно поправить?
Заранее благодарен.
Ответить

Administrator
0
# 3476
(22:49:49  28.09.2016 г.)

Можно и через CSS. Вместо: "Limit:&nbsp;0%" сделайте "<span>Limit:&nbsp;0%</span>".
А в CSS добавьте стиль: #prog_bar>span{ margin: 0 0 0 5px; }
Ответить

Виталий
0
# 3478
(06:57:58  29.09.2016 г.)

Здравствуйте, работает, можно через jQuery
document.getElementById(id).innerHTML="&nbsp;" + percent + "%";
указывая n число раз, сколько нужно отступить, но через css лучше, можно сдвинуть по px.
Ответить

Стас
0
# 1842
(05:39:57  30.08.2014 г.)

Спасибо, всё получилось, правда я немного совместил с другим, ограниченное количество обратным отсчетом считалось в виде цифр, а индикатор чуть ниже наоборот заполнялся. Отличный сайт, нашел много полезного.
Ответить

Евгений
0
# 3936
(15:31:21  05.06.2017 г.)

Контента много не бывает, поэтому хотелось бы чтобы наоборот работало.
Например: необходимо напечатать еще 15%.
Ответить

Закрыть
Ваше имя:
559 + 1 =
Добавить комментарий:
Ваше имя:
559 + 1 =

Перед публикацией все комментарии проходят обязательную модерацию!

Если Вы хотите задать какой-либо вопрос, то сделайте это на нашем форуме.
Таким образом, Вы сможете быстрее получить ответ на интересующий Вас вопрос.
Посетителей онлайн: 4

Какие темы необходимо добавлять на сайт?