• Лучшая CTF площадка рунета Игры Кодебай

    Выполняй задания по кибербезопасности в формате CTF и получай бесценный опыт. Ознакомиться с подробным описанием можно тут.

Счетчик символов в поле

Gandliar

Lotus Team
16.02.2004
535
26
Здравствуйте!

Подскажите пожалуйста, как реализовать такую штуку

Пользователь в лотусе в форме вносит некий текст в поле, а в соседнем поле отображается количество введенных символов. Проблема в том, что хочется чтобы информация менялась по мере ввода/удаления символов.

Заранее благодарю!
 

alexas1

Green Team
10.04.2014
1 201
225
1 для поля ввода использовать combobox с рефрешем на keyword change (тут и run exiting\on change event удобно использовать)
helper button можно леером прикрыть, для красоты
2 использовать JS timer для рефреша (или сразу JS-ом писать в нужное поле кол-во символов)
а зачем это (писать кол-во)? может просто директивно ограничить это кол-во (комбобоксом)?
 

Gandliar

Lotus Team
16.02.2004
535
26
В поле пользователь пишет описание. Длина поля должна быть не более например 185 символов.
Сейчас пользователь может писать сколько угодно, но при рефреше (или выходе из поля или сохранении) считается количество символов и выдает ся сообщение, если превысил. А хотелось бы динамично подсчитывать. отображать, и предупреждать пользователя при превышении.

таким образом пункт 1 не подходит. А как на js написать именно в лотусовом клиенте и чтобы работало - не хватает опыта. Вот поэтому хотелось бы какого примера.
 

alexas1

Green Team
10.04.2014
1 201
225
write - поле, куда пишут
onBlur этого поля:
//перестаем проверять - если ушли из поля
clearInterval(intID);

onFocus этого поля:
varOld = f.write.value;
//проверяем поле каждые 100мс
intID = setInterval("checkField()",100);

не забываем установит JS для клиента

len - поле со счётчиком введённых символов

JS Header:
f = window.document.forms[0]
var intID = 0;
var valOld;
var valCurent;

function checkField () {
valCurent = f.write.value;
//действие, если изменили поле
if (valCurent != valOld) {
//алерт, если строка больше 30 и восстанавливаем значение
if (valCurent.length > 30 ) {f.write.value = valOld; alert("Чота много ))")}
f.len.value = valCurent.length; //пишем в len длину строки
valOld = valCurent
};
//intID = setInterval("checkField()",500);
}
 
  • Нравится
Реакции: Gandliar

Gandliar

Lotus Team
16.02.2004
535
26
Вот спасибо! Работает!
 
Последнее редактирование:
Мы в соцсетях: