Подсчет символов в содержимом редактируемого DIV - PullRequest
3 голосов
/ 15 мая 2011

Я использую этот плагин для подсчета символов на входах и в текстовых областях: http://cssglobe.com/post/7161/jquery-plugin-simplest-twitterlike-dynamic-character-count-for-textareas

Мне нужно будет также подсчитывать символы в DIV с параметром "contentEditable", установленным в True.

Возможно ли модифицировать этот плагин?

Я думаю, мне нужно что-то изменить в этой строке:

            var count = $(obj).val().length;

Но я действительно не знаю, как работает contentEditable ...Есть идеи?

Спасибо!

Редактировать:

Я делаю это так, как подсказал brettz9:

var method = $.inArray(obj.nodeName.toLowerCase(), ['textarea', 'input']) !== -1 ? 'val' : 'text';
var count = $(obj)[method]().length;

У меня только одна маленькая проблемаделая это для другого поля, я должен был иметь минимальную / максимальную длину (у меня есть один вход и один contentEditable)

Это условная часть:

                if (other_required){
                if ($(other_required).val().length > 0 && available >= 0){
                    $(submit_button).attr("disabled", "");
                } else {
                    $(submit_button).attr("disabled", "disabled");
                }

я не знаю какобъявить этот [метод] var и использовать его с «other_required»

Ответы [ 2 ]

4 голосов
/ 15 мая 2011

val() используется для получения значений ввода, таких как текстовое поле, текстовое поле и т. Д. Вместо этого попробуйте text().

РЕДАКТИРОВАТЬ:

Попробуйте это:

function count(obj) {
  var method = $.inArray(obj.nodeName.toLowerCase(), 
    ['textarea', 'input']) !== -1 ? 'val' : 'text';
  return $(obj)[method]().length;
}

И ваш код будет выглядеть так:

if (other_required){
if (count(other_required) > 0 && available >= 0){
    $(submit_button).attr("disabled", "");
} else {
    $(submit_button).attr("disabled", "disabled");
}
1 голос
/ 15 мая 2011

Вы можете сделать это так:

// We'll assume it is contenteditable (which uses text, or could also use html (innerHTML) if you wanted to count markup length) 
//  if it is not a textarea or input (which uses value)
var method = $.inArray(obj.nodeName.toLowerCase(), ['textarea', 'input']) !== -1 ? 'val' : 'text';
var count = $(obj)[method]().length;
...