Почему jQuery добавляет в мою строку символы обратной косой черты "\"? - PullRequest
0 голосов
/ 04 декабря 2010

Я использую jQuery для замены содержимого элемента строкой, которая содержит некоторые элементы.Ниже приведен код, который я использую для создания $ value, строки:

var value =  '<span class="fn">' + $("#fn_").val() + '</span>';
$("input", this).val(value);

Тем не менее, то, что на самом деле выводится, имеет символы пробела по всему этому, например:

<span class="\&quot;fn\&quot;">Name</span>

Я предполагаю, что это, вероятно, глупая ошибка с моей стороны, но не уверен, что я делаю неправильно?Цените любой совет!

РЕДАКТИРОВАТЬ

Для ясности, вот полный код, я создаю пользовательский тип ввода для jEditable, который позволяет мне редактировать vcard.

$.editable.addInputType('person', {
element : function(settings, original) {     
    var fn  = $('<input id="fn_"/>');
    var bday  = $('<input id="bday_" />');
    var wday  = $('<input id="wday_" />');
    var dday  = $('<input id="dday_" />');
    var spouse  = $('<input id="spouse_" />');

    $(this).append(fn);
    $(this).append(bday);
    $(this).append(wday);
    $(this).append(dday);
    $(this).append(spouse);

    /* Hidden input to store value which is submitted to server. */
    var hidden = $('<input type="hidden">');
    $(this).append(hidden);
    return(hidden);
},

content : function(string, settings, original) {
        var $data = $(string);

        var data = {};
        $data.each(function () {
            var $t = $(this);
            data[$t.attr('class')] = {
                                   class: $t.attr('class'),
                                   value: $t.text()};
        });

        alert(data.length);

        $("#fn_", this).val('Name');
        $("#bday_", this).val('Born');
        $("#wday_", this).val('Married');
        $("#dday_", this).val('Died');
        $("#spouse_", this).val('Spouse');
    },

    submit: function (settings, original) {
    var value =  "<span class=fn>" + $("#fn_").val() + '</span>' + '<span class=spouse>' + $("#spouse_").val() + '</span>' + '<span class=bday>' + $("#bday_").val() + '</span>' + '<span class=wday>' + $("#wday_").val() + '</span>' +'<span class=dday>' + $("#dday_").val() + '</span>';
        $("input", this).val(value);
    }

});

Ответы [ 3 ]

0 голосов
/ 04 декабря 2010

Если вы пытаетесь установить HTML, который находится внутри диапазона, один правильный способ сделать это:

.empty().append($('<span class="fn"/>').text($("#fn_").val()))

Или, если вы хотите полностью заменить элемент:

.replaceWith($('<span class="fn"/>').text($("#fn_").val()))

Или, если вы просто хотите удалить класс vcard, добавьте класс fn и установите его содержимое:

.removeClass('vcard').addClass('fn').text($("#fn_").val())

Это гарантирует, что значение из текстового поля будет правильно экранировано перед HTMLвставляется в элемент span.Неправильно использовать .val для установки HTML-содержимого элемента;используйте для этого .html, хотя в этом случае это не обязательно.

0 голосов
/ 27 декабря 2010

Знаете ли вы, что ваша функция отправки выполняется перед отправкой данных на сервер (взгляните на Jeditable-источник), это означает, что все ваши "пролеты" отправляются на сервер, поэтому то, что, вероятно, кодирует ваши элементы, это ваш сервер сценарий.

Приветствие.

0 голосов
/ 04 декабря 2010

Хм. Кажется, я получил это с помощью

'<span class=fn>'

вместо

'<span class="fn">'

т.е. удаляя кавычки вокруг имени класса. По какой-то причине кавычки корректно вставляются в вывод, однако я не могу использовать несколько классов.

...