..
Часто проблемы кажутся легко решить, доказать самой трудной, чем ожидалось, и что это то, что обычно есть потери половины работы вытаскиванию день повторить более или менее ортодоксальным и лихорадочные консультации веб-сайтов, отчаянный для тех, кто уже сталкивался проблемы.
Когда проект, я была необходимость ограничить допустимое количество символов в текстовой Я думал, что решается в несколько минут, это было не так, я нашел несколько решений в сети, но никаких убедительных меня до конца, поэтому я решил осуществить что-то обычай использованием JQuery и отличные jQueryUI , в частности, компонент пакета progessbar.
Colleghiamoci к http://jqueryui.com/ и нажмите на кнопку "загрузить пользовательские Build" в верхнем правом углу.
На следующей странице выберите полезных компонентов, и один из доступных виджетов мы решили взять только индикатор прогресса.

Для нашего небольшого примера создадим простую структуру следующим образом:
Мы создаем наш HTML файл, дать ему содержательное имя (назовем mrw_jquery_txtcheck.html) и вставить в голову теги включений необходимо: ссылку на тему CSS файлов и JS Jquery и jQueryUI.
HREF = "jquery-ui-1.8.9.custom/css/ui-lightness/jquery-ui-1.8.9.custom.css" <link type="text/css" rel="stylesheet" /> <script type="text/javascript" src="jquery-ui-1.8.9.custom/js/jquery-1.4.4.min.js"> </ SCRIPT> <script type="text/javascript" src="jquery-ui-1.8.9.custom/js/jquery-ui-1.8.9.custom.min.js"> </ SCRIPT>
Добавить текстовое поле в организме:
<div> <textarea name="limitedOne" id="limitedOne" style='width:250px;height:100px;'> </ TEXTAREA> </ P>
Затем вставьте дел, который содержит индикатор прогресса и заполнитель, чтобы дать вам представление о том, сколько символов и цифр.
<div style="height: id="progress" 20px;"> </ P> Доступные <p> <span id="charCounter"> 255 </ SPAN> символов. </ P>
Теперь мы можем приступить к записи кода в отдельный файл JavaScript / JQuery с необходимыми функциями, которые затем также включить его в голову тег, мы будем называть check_textarea.js.
Прежде всего определить основные переменные, символы допускаются и те, которые доступны имеют одинаковое значение в начале:
MAX_CHARS = 255; Оставшиеся = MAX_CHARS;Затем мы определяем функцию, которая контролирует и улучшает ProgressBar и счетчик:
checkTextareaLength функции () {
current_length == неопределенная переменная = $ ("# limitedOne"). вал (). длину?
0: $ ("# limitedOne") Вал () длина;..
Оставшиеся = (MAX_CHARS - current_length);
если (Оставшееся> 0) {
$ ("# LimitedOne") ($("# LimitedOne вал ") Вал () Подстрока (0, MAX_CHARS))...;
Остальное {}
$ ("# CharCounter") сайтов (осталось).
уаг ру = Math.floor ((((MAX_CHARS-Оставшиеся) / MAX_CHARS) * 100));
. $ ('# Прогресс ») Progressbar (' значение ', р);
}
}
Давайте проанализируем код: первая строка в checkTextareaLength получает текущее значение текстового поля с помощью функции VAL () JQuery, то подсчитать количество введенных символов, читая длина атрибута.
На следующей строке дает число символов, доступных на разницу.
На данный момент Есть 2 возможности.
1. Оставшиеся переменной меньше нуля (например, после копирования / вставки), если блок берет значение текстовой и ограничивает его до 255 символов с помощью родного подстроку JavaScript
$ ("# LimitedOne") ($("# LimitedOne вал ") Вал () Подстрока (0, MAX_CHARS))...;
2. Оставшиеся больше нуля, иначе блок в первом пролет усиливается с количеством символов:
$ ("# CharCounter") сайтов (осталось).
Затем функция вычисляет соотношение между максимальным количеством символов, которые можно и которые в настоящее время включены, раунды библиотечную функцию результате Math.floor (вниз) до ближайшего:
уаг ру = Math.floor ((((MAX_CHARS-Оставшиеся) / MAX_CHARS) * 100));
На данный момент мы можем только назначить значения, находящиеся в прогрессбар
. $ ('# Прогресс ») Progressbar (' значение ', р);
Давайте напишем код, который выполняется на DOM Ready.
Мы инициализируем прогрессбар связывать и проводить события, которые вы хотите перехватить: нажатие клавиши, MouseOut, изменения и размытия.
Монитор их все, чтобы перехватить событие, что пользователь должен использовать копировать / вставить.
Обратите внимание, что вызов функции откладывается на несколько сотых долей секунды через родной SetTimeout функции, поэтому обязательно, чтобы всегда иметь значение в соответствующее время, когда пользователь закончит ввод.
$ (Function () {
$ ("# Прогресс") Progressbar ().
$ ("# LimitedOne.") Bind ("нажатие клавиши изменения MouseOut размытия ', функция () {
SetTimeout ("checkTextareaLength ()", 200);
});
});
| |
CSS (курс)
Веб-дизайн и доступность в соответствии с W3C CSS и XHTML. Начиная от 29 €. |
| |
HTML (курс)
Язык разметки для веб от 29 €. |
| |
Javascript (курс)
Полное руководство для сценариев на стороне клиента. С 39 €. |