Javascript 使用jquery统计textarea中的链接数

Javascript 使用jquery统计textarea中的链接数,javascript,jquery,Javascript,Jquery,我正在尝试计算文本区域中的链接数,这样我就可以将用户限制为不超过三个链接。下面的代码是我到目前为止的代码,但它不起作用。我认为html是经过编码的,这在某种程度上影响着它……也许不是。如果是,我可以解码吗?有什么想法吗?非常感谢 $(document).ready(function() { $('#box-text').keyup(function() { var links = $('#box-text a'); var total_li

我正在尝试计算文本区域中的链接数,这样我就可以将用户限制为不超过三个链接。下面的代码是我到目前为止的代码,但它不起作用。我认为html是经过编码的,这在某种程度上影响着它……也许不是。如果是,我可以解码吗?有什么想法吗?非常感谢

$(document).ready(function() {
    $('#box-text').keyup(function() {
            var links = $('#box-text a');
            var total_links=0;
            for(var i = 0; i < links.length; i++) {
                total_links++;
            }
            alert("links =  " + total_links);
    });
});
$(文档).ready(函数(){
$(“#框文本”).keyup(函数(){
变量链接=$(“#框文本a”);
var total_links=0;
对于(变量i=0;i
我更愿意让DOM API在这里完成工作,而不是使用正则表达式或手动字符串解析

$('#box-text').bind('keyup paste change', function() {
    var linksLength = $('<div />').html($(this).val()).find('a').length;

    if (linksLength > 3) {
        // Too many links, warn user!
    }
});
$(“#框文本”).bind('keyup-paste-change',function(){
var linksLength=$('').html($(this.val()).find('a').length;
如果(链路长度>3){
//链接太多,警告用户!
}
});


一定要在服务器上验证这一点。

我更愿意让DOM API在这里完成这项工作,而不是使用正则表达式或手动字符串解析

$('#box-text').bind('keyup paste change', function() {
    var linksLength = $('<div />').html($(this).val()).find('a').length;

    if (linksLength > 3) {
        // Too many links, warn user!
    }
});
$(“#框文本”).bind('keyup-paste-change',function(){
var linksLength=$('').html($(this.val()).find('a').length;
如果(链路长度>3){
//链接太多,警告用户!
}
});

请确保也在服务器上验证此设置。

如果is
#box text
是文本区域,则无法从
$('#box text a')
获取链接

你可以这样做

$(document).ready(function() {
    $('#box-text').keyup(function() {
            var text = $(this).val();
            var dummy = $('<div>'+text+'</div>');
            var total_links = $('a', dummy).length;
            alert("links =  " + total_links);
    });
});
$(文档).ready(函数(){
$(“#框文本”).keyup(函数(){
var text=$(this.val();
虚拟变量=$(''+文本+'');
var total_links=$('a',dummy).length;
警报(“链接数=”+总链接数);
});
});
希望这有帮助。快乐编码。

如果is
#box text
是一个文本区域,则无法从
$(“#box text a”)获取链接。

你可以这样做

$(document).ready(function() {
    $('#box-text').keyup(function() {
            var text = $(this).val();
            var dummy = $('<div>'+text+'</div>');
            var total_links = $('a', dummy).length;
            alert("links =  " + total_links);
    });
});
$(文档).ready(函数(){
$(“#框文本”).keyup(函数(){
var text=$(this.val();
虚拟变量=$(''+文本+'');
var total_links=$('a',dummy).length;
警报(“链接数=”+总链接数);
});
});

希望这有帮助。愉快的编码。

您必须使用如下正则表达式匹配textarea的值:

$(document).ready(function() {
    $('#box-text').keyup(function() {
            matches = $('#box-text').val().match(/<a[^>]*>(.*?)<\/a>/gi);
            total_links = matches.length;
            alert("links =  " + total_links);
    });
});
$(文档).ready(函数(){
$(“#框文本”).keyup(函数(){

matches=$('#box text').val().match(/

您必须使用如下正则表达式匹配textarea的值:

$(document).ready(function() {
    $('#box-text').keyup(function() {
            matches = $('#box-text').val().match(/<a[^>]*>(.*?)<\/a>/gi);
            total_links = matches.length;
            alert("links =  " + total_links);
    });
});
$(文档).ready(函数(){
$(“#框文本”).keyup(函数(){

matches=$(“#框文本”).val()。match(/

输入到
中的文本不更改其中的标记。您应该查看值(即
$(this).val()
)改为文本区域的。是否要求用户以
文本输入到
中的格式输入链接?不要更改内部的标记。您应该查看值(即
$(this).val()
)改为文本区域的。您是否要要求用户以
格式输入链接这将泄漏
total\u链接到全局范围。@alex:好奇。为什么
total\u链接会泄漏?警报?还是这是一个jQuery结果?在编辑之前,Femi没有
var
关键字,意思是变量becomes全局(全局对象的属性)。啊。我错过了编辑。谢谢你的澄清:我不知道缺少
var
的问题。我对使用
var
非常虔诚,但这是一件需要记住的好事情。这会将
total\u links
泄漏到全局范围。@alex:好奇。为什么
total\u links
泄漏?警报?还是事实上,这是一个jQuery结果?@Femi在编辑之前,它没有
var
关键字,这意味着变量变为全局变量(全局对象的属性).AH.我错过了编辑。感谢您的澄清:我不知道
var
的缺失,我将其范围扩展到了全球。我一直非常虔诚地使用
var
,但这将是一件需要记住的好事情。