append () не работает после удаления ранее добавленного содержимого - PullRequest
8 голосов
/ 05 декабря 2011

Я конвертирую введенные пользователем URL-адреса в bbcode и добавляю их в текстовую область, но после удаления одной из добавленных мною строк больше не будет добавляться (но вы можете увидеть недавно добавленные значения в 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/

Ответы [ 2 ]

6 голосов
/ 05 декабря 2011

Это потому, что вы изменяете html внутри текстовой области, которая является значением по умолчанию.Кажется, что как только вы установили новое значение (набрав или удалив что-то из текстового поля), это значение по умолчанию игнорируется.

Чтобы обойти это, вам нужно установить значение текстовой области, а не добавлятьк содержанию:

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"; });
}
0 голосов
/ 05 декабря 2011

Я могу посоветовать вам использовать 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...