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

HTML+CSS+JavaScript

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

 

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

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

тема: jquery плагин html-редактор imperavi
 
 автор: Filatov_Aleksey   (24.10.2012 в 10:18)   письмо автору
 
 

Добрый день. Недавно столкнулся с плагином - html - редактор, адрес http://imperavi.com/redactor/.
пытаюсь сделать ограничение на количество вводимых символов, код следующий:
[code]
$('textarea[name=mes]').redactor({
..................
keydownCallback: function(obj, event) {
var max_len = 2000;
var len = $("textarea[name=mes]").getText().length;
var len_code = $("textarea[name=mes]").getCode().length;

//два дива под textarea - показывают длинну текста и исх кода
$("#count_edt").text(len);
$("#count_src").text(len_code);

if(len>max_len){
var code = $("textarea[name=mes]").getCode();
$("textarea[name=mes]").setCode(code.substr(0,len_code));

cursor_end ('mes');
//перемещает указатель в конец textarea
}//if
}//keydownCallback

});

и функция cursor_end - взял вот отсюда: http://www.sd-company.su/examples/textarea_cursor_control.php - см. исх код.

Проблема в следующем: Я хочу выставить ограничение вводимых символов в 2000 символов - именно текста (не исх кода).

При вводе 2001 символа перебрасывает в начало текста и далее печатает буквы в обратном порядке. Если ли какие то ещё способы ограничить количество вводимых символов?

  Ответить  
 
 автор: ЯСА   (24.10.2012 в 11:18)   письмо автору
172.5 Кб
 
   для: Filatov_Aleksey   (24.10.2012 в 10:18)
 

абсолютно все WYSIWYG-редакторы работают по следующему принципу:

-- скрипт редактора сначала определяет размеры и абсолютные координаты имеющегося в вашей форме <textarea>

-- затем скрипт редактора это ваше <textarea> сверху накрывает вновь создаваемым <iframe>, либо <div>'ом тех же размеров, что и <textarea>

-- если используется <iframe>, то документу в нём скрипт редактора устанавливает desingMode="On"; если это <div>, то ему прописывается contentEditable="true"

-- именно эти установки для document в <iframe> и для <div> позволяют редактировать текст, применяя к нему методы execCommand ()
и иначе - никак нельзя, потому что сам тег <textarea> не поддерживает ни contentEditable, ни - тем более - desingMode

-- ваш <textarea> всё время работы юзера с текстом находится снизу под <iframe> (или снизу под <div>'ом) и во всё время редактирования текста он либо изначально пуст, либо содержит неизменным введённый вами изначально в HTML-коде текст, потому что юзер к вашему <textarea> доступа не имеет

-- и только по событию onsubmit вашей формы (когда юзер нажмёт кнопку "Отправить") происходит:
- сначала в value вашего <textarea> записывается innerHTML редактируемого <div>'a (или body.innerHTML документа из <iframe>);
- затем это новое значение value вашего <textarea> отправляется на сервер;
(замечу, что именно записывается, а не добавляется, поэтому всё, что вами изначально было введено HTML-кодом в <textarea> - оно "затирается")

отсюда: все ваши "ужимки и прыжки" как с якобы определением количества символов в вашем <textarea>, так и с якобы передвижением курсора в вашем <textarea> - они полностью бессмысленны

кроме того, определить, как это вы пытаетесь, количество символов текста -- "именно текста (не исх кода)" -- задача весьма нетривиальная
-----

в общем, в процессе редактирования ваш скрипт должен работать с этим самым созданным скриптом редактора <div>'ом (или с документом в <iframe>) и его содержимым, а никак не с вашим <textarea>
-----

в вашем случае (в этом jquery-плагине) используется <div contenteditable="true"> - скриншот прилагаю

  Ответить  
 
 автор: ЯСА   (21.01.2013 в 16:35)   письмо автору
 
   для: ЯСА   (24.10.2012 в 11:18)
 

----------------
создал пустой ответ, чтобы получить ссылку на предыдущий пост

спрашивается - а можно ли было это ("получить ссылку") без создания ответа?

  Ответить  
 
 автор: Deed   (25.10.2012 в 23:21)   письмо автору
 
   для: Filatov_Aleksey   (24.10.2012 в 10:18)
 


<script>
$('.redactor_.redactor_editor').keyup(function(){
    var lc = $(this).html().length;
    if(lc>155){
        alert('STOP!');
    }
 });
</script>

  Ответить  
Rambler's Top100
вверх

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