【问题标题】:append() doesn't work after previously appended contents deleted删除先前附加的内容后,append() 不起作用
【发布时间】:2012-01-13 01:09:54
【问题描述】:

我将用户输入的 url 转换为 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/

【问题讨论】:

标签: javascript jquery append


【解决方案1】:

这是因为您正在更改默认值 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/

或者按照 Felix 的建议:

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"; });
}

【讨论】:

  • 您可以将函数传递给.val(),而不是两次调用.val()ele.val(function(i, v) { return v + 'new content'; });
  • @FelixKling 没错,我可能也会这样做,但只是想在这里保持简单。将添加到答案中
【解决方案2】:

我建议你在这里使用 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 函数。

【讨论】:

  • 为什么我的真实答案被否决了?在我输入答案时,stackoverflow 没有提醒我新的答案。
猜你喜欢
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-27
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2014-12-25
相关资源
最近更新 更多