Подсчет "реальной" длины текста в textarea
1) В БД хранится описание некоторого объекта, размер поля ограничен, предположим, 1000 символов.
2) В форме пытаюсь осуществить предварительную валидацию по длине текста в TEXTAREA с помощью JS (document.form.info.value.length) Переносы строк в Chrome подсчитываются как 1 символ, в IE - как 2 символа. В php-скрипт же (метод POST) передается реальная строка, в которой переносы выглядят как "\r\n" (4 символа). Вопрос: Подскажите новичку, как правильно подсчитать с помощью JS дину текста в textarea, которую получит php-скрипт. Спасибо! |
Цитата:
|
Вот этому значению
document.form.info.value.length можете доверять. Разница в том какие символы какой браузер вставляет чтобы обозначить конец строки. IE вставляет \r\n, а Chrome - только \n. Но эти же символы в php и уйдут. p.s. jQuery метод val() стандартизирует этот разнобой - удаляет \r |
Цитата:
Код echo $_POST['info']; echo "(".strlen(utf8_decode($_POST['info'])).")"; return; Выдает: 1\r\n\r\n(9) Цитата:
|
Цитата:
|
Цитата:
echo strlen("\r\n"); выведет 2 Цитата:
Kolyaj, выше подсказал, что нужно лишнее экранирование убрать. |
Цитата:
|
Цитата:
function slashes(&$el) { if (is_array($el)) foreach($el as $k=>$v) slashes($el[$k]); else $el = stripslashes($el); } if (ini_get('magic_quotes_gpc')) { slashes($_GET); slashes($_POST); slashes($_COOKIE); } |
А ты проверь - включены ли у тебя и выполняется ли
if (ini_get('magic_quotes_gpc')) { // этот код } потому что я вообще проверяю так: if (get_magic_quotes_gpc()) { ... } Цитата:
w r И получишь: w r если просмотреть исходный код страницы |
В общем, пока организовал такой подсчет, вроде работает:
temptext = $('#tinfo').val(); count = 0; pos = temptext.indexOf("\n"); while ( pos != -1 ) { count+=3; pos = temptext.indexOf("\n",pos+1); } document.iform.counter.value= $('#tinfo').val().length + count; |
Часовой пояс GMT +3, время: 12:24. |