2013-04-02 45 views
1

基本上我想创建一个函数,它将搜索一个锚点标记的字符串,当它找到一个时,计算其间的字符并返回该数字。我这样做是为了计算textarea中字符数量的编辑器,因为textarea有一个用户可以输入的限制,我不希望链接中的字符计入总数。Javascript - 计数锚点标记的字符

如果我有这样的文本区域:

This is what it looks like here <a href="http://www.bmhl.com">Placeholder</a>. Please click the link to go to the page. 

有32个字符的锚之前,在之间11和42,总共85在锚定标记之后有34个字符,我不想走向伯爵。

希望是有道理的。

+0

你的意思是计算这样的abcd之间的abcd字符? –

回答

2

你为什么想只是刚刚剥离的锚标记?你可能想看看this question。这里有一个修改后的答案来返回一些html代码的长度。

function plainTextLength(html) { 
    var tmp = document.createElement("div"); 
    tmp.innerHTML = html; 
    var txt = tmp.textContent||tmp.innerText; 
    return txt.length; 
} 

这也适用于您的上述示例。

+0

我会尝试一下。谢谢杰夫 – ninedoors

+0

是的,这是完美的作品。 – ninedoors

0

如果输入应该是一个字符串:

function getLength (string) { 
    return string.match(/<a[^>]+>([^<]+)<\/a>/)[1].length 
} 
-1
var a = document.getElementById('link'); 
var b = a.outerHTML.length - a.innerHTML.length; 

我没有测试它,但它可能工作。

0

不exactely知道你们需要什么,但是该功能为您的示例文本返回11:

function count(textareaInput) { 
    var count = 0; 
    $(textareaInput).filter('a').each(function() { 
    count += $(this).text().length; 
    }); 
    return count; 
} 
0

您可以使用这样的事情:

$('textarea').keyup(function() { 
    $('#count').text(this.value.replace(/<\/?a\s*[^>]*>/g, '').length); 
}); 

See working demo