使用jquery计算textarea中的链接数

时间:2011-05-20 04:56:22

标签: javascript jquery

我正在尝试计算textarea中的链接数量,因此我可以将用户限制为不超过三个链接。下面的代码是我到目前为止的代码,但它不起作用。我在想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);
    });
});

3 个答案:

答案 0 :(得分:5)

我更愿意让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!
    }
});

jsFiddle

请务必在服务器上验证这一点。

答案 1 :(得分:1)

您必须将textarea的值与正则表达式匹配,如下所示:

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

jsFiddle

答案 2 :(得分:0)

如果#box-text是textarea,则无法从$('#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);
    });
});

希望这会有所帮助。快乐的编码。