ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Оффтоп > Болталка
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 12.07.2009, 21:37
m0nsieur
Участник форума
Регистрация: 08.04.2008
Сообщений: 242
Провел на форуме:
2230263

Репутация: 229
По умолчанию

2 mff - я и не говорил, что это супер скрипт,а табуляцию считает наверное потому, что он предназначен для смс, где считается все.
P.S. Ты просто сказал, что не нашел там ничего, вот я и отыскал и немного отредактировал
 
Ответить с цитированием

  #12  
Старый 12.07.2009, 22:08
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


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

m0nsieur, ок, но не то это, можно было не отыскивать. Спасибо.
 
Ответить с цитированием

  #13  
Старый 13.07.2009, 15:22
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


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

АП! Актуально!
 
Ответить с цитированием

  #14  
Старый 14.07.2009, 13:43
n0reply
Новичок
Регистрация: 31.03.2009
Сообщений: 14
Провел на форуме:
97409

Репутация: 6
Arrow

ИМХО, самый адекватный вариант (учитывает любые символы, т.к. и перенос строки и табуляция - это символ, причем в винде перенос строки = 2 символам).

Код HTML:
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form id="frmText">
<textarea name="myText" id="myText">
</textarea>
</form>
<p>	
 Осталось символов: <span id="symLeft"></span>
</p>
<script language="JavaScript" type="text/javascript">
 var MAXLEN = 50;
 function checkLen(e) {
  var text = e.myText.value;
  var cut = false;
  var len = MAXLEN + 1;
  var mult = 1;
  while (len > MAXLEN) {
   len = text.length;
   if (len > MAXLEN) {
     text = text.substr(0, text.length - 1);
   	 cut = true;
   }
  }
  if (cut)
     e.myText.value = text;
  var lenLeft = MAXLEN - len;
  document.getElementById('symLeft').innerHTML = lenLeft;
  return (len < MAXLEN);
 }
 var f = document.getElementById('frmText');
 f.myText.onkeyup = function() { return checkLen(f); }
</script>
</body>
</html>
Я может что-то не так понял, но вроде ты не хочешь чтобы счетчик срабатывал на переносе строки, тогда так:
Код HTML:
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form id="frmText">
<textarea name="myText" id="myText">
</textarea>
</form>
<p>	
 Осталось символов: <span id="symLeft"></span>
</p>
<script language="JavaScript" type="text/javascript">
 var MAXLEN = 50;
 function checkLen(e) {
  var text = e.myText.value;
  var cut = false;
  var len = MAXLEN + 1;
  var mult = 1;
  if (navigator.userAgent.indexOf('Windows') != -1)
     mult = 2;
  while (len > MAXLEN) {
   len = text.length;
   var find = text.match(/\r\n|\r|\n/g);
   if (find != null)
    len -= find.length*mult;
   if (len > MAXLEN) {
     text = text.substr(0, text.length - 1);
   	 cut = true;
   }
  }
  if (cut)
     e.myText.value = text;
  var lenLeft = MAXLEN - len;
  document.getElementById('symLeft').innerHTML = lenLeft;
  return (len < MAXLEN);
 }
 var f = document.getElementById('frmText');
 f.myText.onkeyup = function() { return checkLen(f); }
</script>
</body>
</html>
Проверял и в винде и в линухе, тут суть в том, что он находит в тексте символы переноса строки и отнимает их от всей длины текста, либо с множителем два (если у нас винда), либо с множителем 1, если не винда.

Также можно в конце скриптовой части добавить пару строк (привязать эту функцию ко всем телодвижениям), чтобы счетчик реагировал на контекстое меню мыши типа копировать вставить вырезать и другие манипуляции:
Код HTML:
 f.myText.onchange = function () { checkLen(f); }
 f.myText.onfocus = function () { checkLen(f); }
 f.myText.onblur = function () { checkLen(f); }
 f.myText.onselect = function() { checkLen(f); }
 f.myText.onmouseout = function () { checkLen(f); }
 f.myText.onmousemove = function () { checkLen(f); }
И так, наиболее полный вариант, который не воспринимает переносы строк и реагирует на мышку выглядит примерно так:
Код HTML:
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<form id="frmText">
<textarea name="myText" id="myText">
</textarea>
</form>
<p>	
 Осталось символов: <span id="symLeft"></span>
</p>
<script language="JavaScript" type="text/javascript">
 var MAXLEN = 50;
 function checkLen(e) {
  var text = e.myText.value;
  var cut = false;
  var len = MAXLEN + 1;
  var mult = 1;
  if (navigator.userAgent.indexOf('Windows') != -1)
     mult = 2;
  while (len > MAXLEN) {
   len = text.length;
   var find = text.match(/\r\n|\r|\n/g);
   if (find != null)
    len -= find.length*mult;
   if (len > MAXLEN) {
     text = text.substr(0, text.length - 1);
   	 cut = true;
   }
  }
  if (cut)
     e.myText.value = text;
  var lenLeft = MAXLEN - len;
  document.getElementById('symLeft').innerHTML = lenLeft;
  return (len < MAXLEN);
 }
 var f = document.getElementById('frmText');
 f.myText.onkeyup = function() { return checkLen(f); }
 f.myText.onchange = function () { checkLen(f); }
 f.myText.onfocus = function () { checkLen(f); }
 f.myText.onblur = function () { checkLen(f); }
 f.myText.onselect = function() { checkLen(f); }
 f.myText.onmouseout = function () { checkLen(f); }
 f.myText.onmousemove = function () { checkLen(f); }
</script>
</body>
</html>
Не знаю так я понял про переносы или не так) а с input type=text тебе уже подсказали, а если хочешь сделать также счетчик, то тут все также будет, только переносы строки вообще можно даже не искать. Могу и такой пример выложить.
 
Ответить с цитированием

  #15  
Старый 15.07.2009, 15:40
Godfather Bulan
Постоянный
Регистрация: 18.03.2008
Сообщений: 411
Провел на форуме:
7469280

Репутация: 2389
Отправить сообщение для Godfather Bulan с помощью ICQ
По умолчанию

актуально?
 
Ответить с цитированием

  #16  
Старый 19.07.2009, 03:30
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


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

n0reply, спасибо. Попробую завтра разобраться, что к чему
Godfather Bulan, спасибо! Актуально!
 
Ответить с цитированием

  #17  
Старый 29.07.2009, 14:23
mff
Познавший АНТИЧАТ
Регистрация: 12.03.2008
Сообщений: 1,379
Провел на форуме:
5866479

Репутация: 1809


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

Всем спасибо!
Pashkela получает шестерочку 17-37-37, так как его код работает без глюков! Большое спасибо, замечательный код!!!!

http://forum.antichat.ru/showpost.php?p=1387631&postcount=2

P.S. сорр за мультипостинг...
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Письма девочек-подростков в журнал "Yes!" Lolik Болталка 43 03.03.2009 22:43
Мой ржачный разговор в аське с кем-то вроде как с античата, как я подумал Дрэгги Болталка 21 22.07.2007 12:33
юмор!))) silveran Электроника и Фрикинг 10 01.06.2006 03:21



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ