开发者

count number of links in textarea using jquery

I am trying to count the number of links in a textarea so I can limit the user to no more than three links. The code below is what I have so far, but it's not working. I am thinking the html is encoded and that is affecting it somehow ...or maybe not. If so, can I decode it? Any ideas? Thanks so much.

$(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);
    });
});


I'd prefer to let the DOM API do the work here, rather than a regex or manual string parsing.

$('#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.

Be sure to validate this on the server too.


You will have to match the value of the textarea with a Regular Expression like this:

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

jsFiddle


If is #box-text is a textarea, you cannot get links from $('#box-text a').

You can do something like,

$(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);
    });
});

Hope this helps. Happy Coding.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜