我正在尝试计算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);
});
});
答案 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!
}
});
请务必在服务器上验证这一点。
答案 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);
});
});
答案 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);
});
});
希望这会有所帮助。快乐的编码。