Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подсчет символов вводимых пользователем в текстовое поле
 
 автор: Mefisto84   (18.04.2006 в 17:50)   письмо автору
 
 

Здравствуйте! Вот к примеру есть форма с полем для ввода текста. И максимально в это поле можно вводить допустим 20 символов. Как сделать так что бы на против этого поля был счетчик который отсчитывал бы в обратном порядке количество введенных символов, ну т.е. 20,19,18… и т.д. И что бы когда ввели 20 символов ввод бы прекращался, ну т.е. больше 20 символов ввести было бы нельзя. Как это можно сделать? Очень ли это сложно?
Заранее благодарен.

   
 
 автор: codexomega   (18.04.2006 в 18:46)   письмо автору
 
   для: Mefisto84   (18.04.2006 в 17:50)
 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script language="javascript">
function textCounter(field, countfield, maxlimit) {
  if (field.value.length > maxlimit)
      {field.value = field.value.substring(0, maxlimit);}
      else
      {countfield.value = maxlimit - field.value.length;}
}
</script>

</head>

<body>
<form>
<textarea name="Q336" cols="40" rows="5" wrap="hard" onKeyDown="textCounter(this.form.Q336,this.form.remLentext,20);" onKeyUp="textCounter(this.form.Q336,this.form.remLentext,20);"></textarea>
<br>Characters remaining: <input type=box readonly name=remLentext size=3 value=20>
</form>
</body>
</html>




Правда, можно еще добавить событие onpaste().

   
 
 автор: 12345   (18.04.2006 в 19:07)   письмо автору
 
   для: codexomega   (18.04.2006 в 18:46)
 

<form><input size=24 maxLength=20 
    onkeyup=this.form.t2.value=this.maxLength-this.value.length 
    onpaste=this.onkeyup()><br>
<input name=t2>

   
 
 автор: Mefisto84   (18.04.2006 в 19:59)   письмо автору
 
   для: 12345   (18.04.2006 в 19:07)
 

Да, именно это я имел в виду. Спасибо. Но вот у меня теперь другой вопрос: а если у меня 10 окон для ввода, мне для каждого окна нужно прописать данный скрипт? Или можно как-то по другому сделать? И еще, если я пропишу его для каждого окна, не сильно ли будет перегружена страница? Ну то есть не будет ли она слишком долго грузится из-за такого большого количесnва JavaScript ?

   
 
 автор: 12345   (18.04.2006 в 20:14)   письмо автору
 
   для: Mefisto84   (18.04.2006 в 19:59)
 

Тогда
onkeyup=f1(this) onpaste=f1(this)
.
Это сильно не перегрузит. Но есть возможность перехватывать перерывания на документе и таким образом исключить их из полей.


document.onpaste=document.onkeyup=function(ev){
t=document.all?ev.target:event.srcElement;
if(t.tagName=='INPUT'&&t.className=='ogranichVv')return;
    выполнить действия, узнав спаренное поле ввода, напр., по t.id . 
}


Но тут надо класс прописать, ид, систему продумать. Делайте, если хотите.

Да, можно не класс, а name вместо него.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования