计算contentEditable DIV中的字符数

时间:2011-05-15 03:50:35

标签: jquery counter contenteditable

我正在使用此插件计算输入和textareas上的字符:http://cssglobe.com/post/7161/jquery-plugin-simplest-twitterlike-dynamic-character-count-for-textareas

我需要在设置“contentEditable”设置为True的DIV中计算字符数。

这可能会修改这个插件吗?

我想我需要改变这一行:

            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");
                }

我不知道如何声明[method] var并将其与“other_required”一起使用

2 个答案:

答案 0 :(得分:4)

val()用于获取输入值,例如textarea,textbox等。请尝试使用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 :(得分:1)

你可以这样做:

// 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;