Показать сообщение отдельно

  #2  
Старый 15.07.2009, 03:42
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

хм, интересная задачка оказалась, мой вариант:

Код:
<script> 
function isNotMax(e){
	e = e || window.event;
	var target = e.target || e.srcElement;
	var code=e.keyCode?e.keyCode:(e.which?e.which:e.charCode)

	switch (code){
		case 13:
		case 8:
		case 9:
		case 46:
		case 37:
		case 38:
		case 39:
		case 40:
			return true;
}
      var max = 10; // Максимальное кол-во знаков в textarea (также надо выставить в html-форме)
      var l =  document.myform.text.value.length;
      if (l > max) document.myform.text.value = "";
      var a = document.myform.ost.value;
      if (a>=0 && l<=max) document.myform.ost.value = max - l;
      return target.value.length < max;
}
</script>
<form name="myform">
<textarea rows="10" cols="25" name = "text" onkeyup="return isNotMax(event)" onChange="return isNotMax(event)" onFocus="return isNotMax(event)" onBlur="return isNotMax(event)" onSelect="return isNotMax(event)" onMouseOut="return isNotMax(event)" onMouseMove="return isNotMax(event)"  onkeypress="return isNotMax(event)"></textarea>
<input type = "text" name = "ost" size = "5" value= "10">
</form>
Отличия от предыдущего:

1. Грамотная блокировка кнопок - т.е. можно заново перенабрать сообщение
2. Кол-во оставшихся символов считается всегда, если удалить часть текста и начать "донабирать" остаток
3. Защита от вставки большого текста из буфера (копипаст)

Работает в FF, IE и OPERA, что и закономерно, т.к. максимально упрощенно и без извратов старался

Но наверняка можно еще лучше сделать
 
Ответить с цитированием