我将用户输入的网址转换为bbcode并将其附加到textarea,但是在删除其中一行后,它不会附加更多(但你可以看到firebug中新添加的值,真的很奇怪)。这是我的代码:
$(function(){
$(".addUrl").click(function(){
$("#addUrl").slideDown();
})
$('#su').click(function(){
if($("#u").val().length>3)
addUrl($("#u").val());
$("#u").val("");
})
$("input[value=\"x\"]").click(function(){$("#addUrl").fadeOut();})
})
function addUrl(e)
{
patt="http[s]*:\/\/";
if(e.match(patt))
u=e;
else
u="http://"+e;
$("textarea[name=\"content\"]").append("\n\r[url]"+u+"[/url]\n\r");
}
这是jsfiddle:http://jsfiddle.net/FpSsc/
答案 0 :(得分:6)
这是因为您正在更改textarea中的html,这是默认值。看来,只要您设置了一个新值(通过在文本框中键入或删除某些内容),就会忽略此默认值。
要解决此问题,您需要设置textarea的值而不是附加到内容:
function addUrl(e)
{
patt="http[s]*:\/\/";
if(e.match(patt))
u=e;
else
u="http://"+e;
var newVal = $("textarea[name=\"content\"]").val() + "\n\r[url]"+u+"[/url]\n\r"
$("textarea[name=\"content\"]").val(newVal);
}
http://jsfiddle.net/infernalbadger/FpSsc/1/
或者像菲利克斯推荐的那样:
function addUrl(e)
{
patt="http[s]*:\/\/";
if(e.match(patt))
u=e;
else
u="http://"+e;
$("textarea[name=\"content\"]").val(function(i, v) { return v + "\n\r[url]"+u+"[/url]\n\r"; });
}
答案 1 :(得分:0)
我可能会建议你在这里使用val
function addUrl(e)
{
patt="http[s]*:\/\/";
if(e.match(patt))
u=e;
else
u="http://"+e;
$("textarea[name=\"content\"]").val( $("textarea[name=\"content\"]").val() + "\n\r[url]"+u+"[/url]\n\r");
}
请尝试这个addUrl函数。